Отображать локальное изображение в iPhone HTML mail - PullRequest
3 голосов
/ 28 марта 2010

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

Ответы [ 5 ]

4 голосов
/ 07 мая 2010

К сожалению, это не поддерживается 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
3 голосов
/ 29 марта 2010

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

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

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

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

<img src="cid:image001.jpg@01CACC43.7035CE50">

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

Content-Type: image/jpeg;
    name="image001.jpg"
Content-Transfer-Encoding: base64
Content-ID: <image001.jpg@01CACC43.7035CE50>

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

1 голос
/ 29 марта 2010

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

0 голосов
/ 29 марта 2010

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

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

http://iphone -dev-tips.alterplay.com / 2009/11 / прикрепление-изображения из-UIView-к-email.html

критическая часть такова: // ATTACHING A SCREENSHOT NSData *myData = UIImagePNGRepresentation(screenshot); [controller addAttachmentData:myData mimeType:@"image/png" fileName:@"route"];

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

0 голосов
/ 29 марта 2010

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

См. этот вопрос , а также пример кода на этом сообщении на форуме

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...