Использование Content-ID и cid для встроенных изображений электронной почты в Thunderbird

Я создаю электронные письма в приложении PHP, которые прикрепляют несколько файлов к электронной почте HTML. Некоторые из файлов представляют собой электронные таблицы Excel, некоторые из которых являются логотипами компании, которые необходимо встроить в HTML, поэтому они загружают по умолчанию с использованием идентификаторов Content-ID и cid для ссылки на прикрепленные изображения.

Насколько я могу судить, мой синтаксис верен, но изображения никогда не загружаются inline (они прикреплены успешно, однако).

From: email@example.com Reply-To: email@example.com MIME-Version: 1.0 Content-type: multipart/mixed;boundary="d0f4ad49cc20d19bf96d4adf9322d567" Message-Id: <20150421165500.0A5488021B@server> Date: Tue, 21 Apr 2015 12:54:59 -0400 (EDT) --d0f4ad49cc20d19bf96d4adf9322d567 Content-type: text/html; charset=utf-8 Content-transfer-encoding: 8bit <html> Html message goes here, followed by email.<br/> <img src="cid:mylogo" /> </html> --d0f4ad49cc20d19bf96d4adf9322d567 Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; name=excelsheet.xlsx Content-Description: excelsheet.xlsx Content-Disposition: attachment; filename="excelsheet.xlsx"; size=24712; Content-transfer-encoding:base64 [base64 encoded string goes here.] --b19e863e2cf66b40db1d138b7009010c Content-Type: image/jpeg; name="mylogo.jpg" Content-transfer-encoding:base64 Content-ID: <mylogo> Content-Disposition: inline; filename="mylogo.jpg"; size=7579; [base64 encoded string goes here.] --b19e863e2cf66b40db1d138b7009010c-- 

Может ли кто-нибудь увидеть очевидную причину, по которой изображение не будет встраиваться, как ожидалось?

РЕДАКТИРОВАТЬ

Обратите внимание, что это поведение не является общим для всех почтовых клиентов. Пока что только в Thunderbird.

Solutions Collecting From Web of "Использование Content-ID и cid для встроенных изображений электронной почты в Thunderbird"

Я заметил два вопроса:

  1. MIME-граница несовместима. Для первого вложения это d0f4ad49cc20d19bf96d4adf9322d567 а затем используется b19e863e2cf66b40db1d138b7009010c . Таким образом, технически второе приложение является «частью» первого приложения.

    Если вы замените все b19e863e2cf66b40db1d138b7009010c на d0f4ad49cc20d19bf96d4adf9322d567 Thunderbird правильно идентифицирует вложение изображения.

  2. Используйте multipart/related вместо multipart/mixed . (см. RFC2387 )

    Многочастный / связанный используется, чтобы указать, что каждая часть сообщения является компонентом совокупного целого. Это для составных объектов, состоящих из нескольких взаимосвязанных компонентов – надлежащий показ не может быть достигнут путем индивидуального отображения составных частей. Сообщение состоит из корневой части (по умолчанию, первой), которая ссылается на другие части, которые могут в свою очередь ссылаться на другие части. Части сообщения обычно ссылаются на заголовок части «Content-ID». (см. запись в Википедии для MIME multipart / related )