Ответ 1
Я наткнулся на эту же проблему, и решение было довольно запутанным. Можно вставить изображение в электронное письмо. Проблема в том, что по какой-то странной причине кодированное изображение base64 не должно содержать новых строк (это супер странно! Я знаю). Я предполагаю, что вы используете NSData + Base64 от Matt Gallagher? И я! Эта категория создает многострочную строку base64. Код в категории
- (NSString *)base64EncodedString
{
size_t outputLength;
char *outputBuffer =
NewBase64Encode([self bytes], [self length], true, &outputLength);
NSString *result =
[[NSString alloc]
initWithBytes:outputBuffer
length:outputLength
encoding:NSASCIIStringEncoding];
free(outputBuffer);
return result;
}
Заменив третий параметр NewBase64Encode на false, вы получите строку строки base64, и это сработало для меня. Я закончил создание новой функции (просто чтобы не сломать ничего!) В категории.
- (NSString *)base64EncodedStringSingleLine
{
size_t outputLength;
char *outputBuffer =
NewBase64Encode([self bytes], [self length], false, &outputLength);
NSString *result =
[[NSString alloc]
initWithBytes:outputBuffer
length:outputLength
encoding:NSASCIIStringEncoding];
free(outputBuffer);
return result;
}
Использование этой функции для кодирования UIImage NSData отлично работает. Клиенты электронной почты, которые я тестировал до сих пор, показывают встроенное изображение. Надеюсь, это сработает для вас!
Изменить: Как указано в комментариях, это решение является лишь частичным. Изображение будет прикреплено как URI данных в письме. Однако не все почтовые клиенты будут отображать встроенное изображение.