Отображение локального изображения в HTML-почте iPhone

В моем приложении я составляю сообщение электронной почты HMTL с расширением 3.0+ MFMailComposeViewController. Для этого я создал файл HTML с некоторыми заполнителями. В своем коде я читаю файл HTML и с помощью replaceOccurrencesOfString заменяю заполнители данными из приложения. Таким образом я составляю тело письма, которое хочу отправить. Все это работает очень хорошо, за исключением того факта, что в моем файле HTML у меня есть тег <img src='imageplaceholderpath' />. Почему-то я не могу понять, чем я должен заменить этот imageplaceholderpath, чтобы сослаться на изображение, которое находится в моем приложении. Является ли это допустимым подходом, и если да, то каков синтаксис/логика пути, который я должен указать? Я ценю ваши идеи! С уважением Sjakelien


person Sjakelien    schedule 28.03.2010    source источник


Ответы (5)


К сожалению, это не поддерживается API iPhone 3.x.

http://developer.apple.com/iphone/library/documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html

Для этого потребуется Content-ID: быть частью вложенной части, но это не так.

 - (void)addAttachmentData:(NSData*)attachment mimeType:(NSString*)mimeType fileName:(NSString*)filename
person Xav    schedule 07.05.2010

Обратите внимание, что использование data: URI не будет работать во всех почтовых клиентах. Те, которые используют IE в качестве механизма рендеринга, вообще не поддерживают его, если не установлен IE8, и даже в этом случае Согласно Википедии, data: URI ограничены максимальным размером 32 КБ.

Самый простой способ заставить это работать — поместить изображение куда-нибудь на свой собственный сервер и сослаться на него, используя полный URI http://. Если вы не можете сделать это по какой-либо причине (возможно, изображение создается как часть использования вашего приложения), вы можете попробовать прикрепить изображение как часть MIME и сослаться на него из HTML.

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

Прикрепите изображение к письму, как предложил yonel. Каким-то образом вам также нужно добавить заголовок Content-ID: в подраздел. Содержимое этого заголовка затем используется в качестве атрибута src вашего изображения. Мое спам-сообщение выглядит так в HTML:

<img src="cid:[email protected]">

Вложенная часть выглядит так:

Content-Type: image/jpeg;
    name="image001.jpg"
Content-Transfer-Encoding: base64
Content-ID: <[email protected]>

Глядя на документацию для addAttachmentData:mimeType:fileName:, я предполагаю, что вы не сможете заставить это работать, и вам придется рассмотреть возможность отправки электронной почты с использованием необработанного SMTP.

person Steve Madsen    schedule 29.03.2010

Я нашел этот пост, который отвечает на большинство моих вопросов: http://www.iphonedevsdk.com/forum/iphone-sdk-development/25021-embedding-image-email-body.html.

person Sjakelien    schedule 29.03.2010

Я не думаю, что вы можете вставлять изображения как часть электронной почты, как это делает обычный почтовый клиент. Однако кажется, что вы можете включить данные изображения непосредственно в HTML как данные в кодировке base64. Это довольно нестандартный способ ведения дел, поэтому электронная почта может отображаться не во всех почтовых клиентах.

См. этот вопрос для получения дополнительной информации и примера кода на эта запись на форуме

person pheelicks    schedule 28.03.2010

Я не знаю, является ли формат HTML обязательным для вас, но на самом деле встроить изображение в электронное письмо можно без использования HTML, просто с изображением в качестве вложения .

Просто посмотрите, как это достигается здесь:

http://iphone-dev-tips.alterplay.com/2009/11/attaching-image-of-uiview-to-email.html

главное вот это:

// ATTACHING A SCREENSHOT
NSData *myData = UIImagePNGRepresentation(screenshot);
[controller addAttachmentData:myData mimeType:@"image/png" fileName:@"route"];

Вы получаете PNG-представление вашего UIImage (как NSData) и прикрепляете его к своему электронному письму.

person yonel    schedule 29.03.2010
comment
Я думаю, что мне нужен HTML, так как я хочу контролировать форматирование текста сообщения. Что еще более важно, я хочу, чтобы изображение отображалось в тексте в определенной позиции. - person Sjakelien; 29.03.2010