Как встроить изображение в HTML в MFMailComposeViewController для iPhone - PullRequest
16 голосов
/ 21 ноября 2010

Я пытаюсь встроить кучу небольших изображений в HTML-таблицу, которую я хочу отправить с помощью MFMailComposeViewController. После некоторого поиска я понял, что почти все предлагают класс «NSData + Base64 by Matt Gallagher» для кодирования фотографии в кодировке Base64 и встраивания ее в HTML. Хотя он выглядит для iPhone и некоторых почтовых серверов, но Gmail и Yahoo не показывают изображения , встроенные таким образом. Эта проблема упоминается и здесь .

Мне было интересно, есть ли у кого-нибудь лучшее решение для этого. Я не хочу загружать фотографии в Интернете и помещать ссылку в HTML-код. Я хотел бы, чтобы изображение было прикреплено к электронному письму и отображалось в виде встроенного изображения в HTML-тексте, таблице, ...

Ответы [ 3 ]

17 голосов
/ 21 ноября 2010

К сожалению, в настоящее время это невозможно сделать так, как вы хотите. Встроенные изображения в электронной почте в формате HTML используют отдельные части MIME, на которые ссылаются посредством идентификатора содержимого из тела сообщения. MFMailComposeViewController не дает вам контроля над структурой MIME сообщения и не позволяет добавлять встроенные ссылочные части содержимого.

Встраивание данных изображения в теги <img>, так как base64 может работать с некоторыми комбинациями - частично это функция почтового клиента и частично браузер, в конечном итоге используемый для его рендеринга, но, как вы заметили, он не очень переносим. 1004 *

7 голосов
/ 21 ноября 2010

Я не уверен насчет добавления в HTML, но вот как я добавляю изображения в виде вложений:

UIImage *image = [UIImage imageNamed:@"myImage.png"];
MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init];
composer.mailComposeDelegate = self;

NSData *data = UIImagePNGRepresentation(image);
[composer addAttachmentData:data mimeType:@"image/png" fileName:@"curse"];
[composer setMessageBody:@"" isHTML:NO];
[self presentModalViewController:composer animated:YES];
[composer release];

Теперь все, что вам нужно, это изменить тело на HTML и указать ссылку на прикрепленное изображение из HTML.

3 голосов
/ 04 июня 2013

Загрузите изображение на какой-нибудь хостинг-сайт, скопируйте ссылку и поместите его на

<img src='the link.png' /> html on your email message body.
...