Каков рекомендуемый способ отправки персонализированных изображений в электронных письмах в формате html?

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

Для моей цели я не могу этого сделать.

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

Вы когда-нибудь сталкивались с этим сценарием? Должен ли я использовать вложения или кодировку изображений base64? Мысли/опыт?


person Cyan    schedule 24.05.2014    source источник
comment
Я думаю, что это правильный вопрос, но не могли бы вы уточнить, как изображение будет персонализировано? Вы сами будете их генерировать?   -  person Joeytje50    schedule 26.05.2014
comment
Они будут взяты из БД, но для каждого пользователя они будут свои.   -  person Cyan    schedule 26.05.2014
comment
и вы отправляете это из ESP, как точную цель? Или с личного домена/хоста?   -  person zazzyzeph    schedule 27.05.2014
comment
Что бы вы ни делали, убедитесь, что контент также предоставляется в виде текста - например. в теге alt — столько людей просматривают электронные письма без изображений.   -  person Ruskin    schedule 29.05.2014
comment
Почему вы не можете сохранить каждое из изображений на сервере - это может быть решением - просто создайте одно изображение для каждого электронного письма с соглашением об именах, например. гиды? Если в электронном письме есть конфиденциальная информация, является ли электронная почта правильным вектором для использования - электронная почта небезопасна.   -  person Ruskin    schedule 29.05.2014


Ответы (2)


Тело HTML должно ссылаться на изображения с использованием идентификатора содержимого (cid): <img src="cid:xyz">, где xyz — значение идентификатора содержимого вложения (Content-ID) MIME-заголовка.

Если вы создаете сообщение непосредственно в формате MIME, убедитесь, что вложение добавлено к сообщению, а его заголовок MIME Content-ID установлен правильно. Если вы используете объектную модель Outlook или MAPI, вы должны установить свойство PR_ATTACH_CONTENT_ID для изображения.

person Dmitry Streblechenko    schedule 26.05.2014

Поскольку HTML5 позволяет встраивать изображения в кодировке base64, это может быть самым простым способом. Проверьте следующий источник: http://www.bigfastblog.com/embed-base64-encoded-images-inline-in-html

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

Изменить: этот учебник выглядит многообещающе, но я его не пробовал: http://www.phpeveryday.com/articles/PHP-Email-Using-Embedded-Images-in-HTML-Email-P113.html.

person Merlin Denker    schedule 26.05.2014
comment
Основная проблема с подходом base64 заключается в том, что кажется, что передаваемые данные будут больше, чем если бы мы использовали двоичный файл, прикрепленный в соответствии с этим потоком stackoverflow.com/questions/11402329/base64-encoded-image-size. Как на это отреагируют почтовые клиенты? Это, безусловно, вызывает озабоченность у мобильных сетей. - person Cyan; 26.05.2014
comment
Невозможно использовать это в Outlook - Word отображает HTML-изображения в Outlook, а не в IE. И Word не поддерживает встроенные изображения. - person Dmitry Streblechenko; 27.05.2014
comment
@DmitryStreblechenko Вы имеете в виду: Word отображает электронные письма в формате HTML в Word ... :) - person yunzen; 30.05.2014
comment
Нет, я имею в виду, что Word отображает HTML в Outlook — у него есть общий компонент, который используется как в Outlook, так и в Word. ИЕ не используется. - person Dmitry Streblechenko; 30.05.2014