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


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

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

From: [email protected]
Reply-To: [email protected]
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.

Author: fred2, 2015-04-21

1 answers

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

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

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

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

    Составной/связанный используется для указания того, что каждая часть сообщения является компонент совокупного целого. Это относится к составным объектам, состоящим из нескольких взаимосвязанных компонентов - правильное отображение не может быть достигнуто путем индивидуального отображения составных частей. Сообщение состоит из корневой части (по умолчанию первой), которая ссылается на другие встроенные части, которые, в свою очередь, могут ссылаться на другие части. На части сообщений обычно ссылается заголовок части "Идентификатор содержимого". (см. Запись в Википедии для MIME, состоящая из нескольких частей/связанная)

 2
Author: MrTux, 2015-04-27 16:15:16