Как создать электронное письмо со встроенными изображениями, которое совместимо с большинством почтовых клиентов - PullRequest
28 голосов
/ 26 октября 2010

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

Вот исходное сообщение, которое создает наша система.Этот пример содержит вложение изображения и встроенное изображение.

Mime-Version: 1.0
From: ...
To: ...
CC: 
Subject: test
x-sender: ...
x-mailer: ...
Content-Type: multipart/mixed; boundary="-------------...A128803765634794"

---------------...A128803765634794
Content-Type: multipart/related; boundary="-------------...B128803765634796"

---------------...B128803765634796
Content-Type: text/html; charset="UTF-8"

<p style="margin: 0; padding: 0"><img src="cid:083.gif" alt="" /></p>

---------------...B128803765634796
Content-type: image/gif; name="083.gif"
Content-ID: <083.gif>
X-Attachment-Id: 083.gif
Content-Disposition: Embedded; filename="083.gif"
Content-transfer-encoding: base64

............................................................................
............................................................................
......................................................
---------------PineappleCodeB128803765634796--
---------------PineappleCodeA128803765634794
Content-type: image/gif; name="waiting.gif"
Content-Disposition: Attachment; filename="waiting.gif"
Content-transfer-encoding: base64

............................................................................
............................................................................
......................................................
---------------PineappleCodeA128803765634794--

Есть ли еще один заголовок, который я должен добавить, или правило, которому я должен следовать?

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

При получении письма в Gmail я получаю

Изображения не отображаются.
Отображение изображений ниже - Всегда отображатьизображения из ...

Затем внедренное изображение отображается в виде вложения в изображение (точно так же, как и вложение моего другого изображения)

Я нажимаю кнопку Показать изображения ниже, и мое изображение отображается вОсновная часть письма, но не удаленная из раздела «Вложения».

Если я вернусь к своему входящему ящику и вернусь к письму, оно будет выглядеть нормально.

Я не понимаю, почему это происходит.Это не связанное изображение (с внешнего URL), и это не происходит при отправке встроенных изображений из Gmail в Gmail.Именно это заставляет меня думать, что я могу делать что-то неправильно, и я боюсь, что это может повлиять на других получателей.

Ответы [ 2 ]

29 голосов
/ 15 января 2011

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

2 голосов
/ 29 сентября 2016

У меня были проблемы с загрузкой встроенных изображений в Gmail, и я обнаружил, что неправильно использую библиотеку PEAR Mail_Mime в PHP. Как уже отмечалось, Content-ID должен быть отформатирован как идентификатор сообщения. Библиотека PEAR Mail_Mime попытается добавить domainID к вашему Content-ID, если он не указан. Он также попытается заменить регулярное выражение этих Content-ID в теле письма, чтобы сохранить ссылку. В моем случае этот шаг не удался, что привело к разрыву ссылки между тегом HTML и вложением MIME. Поэтому для Gmail было совершенно правильно отказаться от показа изображения в строке. Однако изображение отображалось как вложение.

...