Тип MIME для соответствия HTML , электронная почта, изображения и обычный текст?

Ответ на Mail multipart/alternative vs multipart/mixedпредполагает, что вложения должны быть одноранговыми для сообщения multipart/alternative, например:

  • multipart/mixed
    • составной/альтернативный
      • text/plain
      • text/html
    • что-то/что-то (расположение: вложение)
    • что-то/что-то (расположение: вложение)
    • ...

Я хочу отправить электронное письмо с частью html с некоторыми встроенными изображениями и альтернативой обычного текста. Каков предпочтительный макет MIME для различных частей? Пара вариантов появляется в примере кода и в других вопросах, но какие из них лучше всего работают на практике? Я склоняюсь к следующему:

  • multipart/alternative
    • текстовый/обычный
    • составной/связанный
      • text/html (ссылка на изображения по cid)
      • image/gif
      • image/gif
      • ...

Таким образом, изображения явно предназначены для визуализации HTML-части. Полный пример:

From: Rich Example 
To: A Recipient 
Subject: An example of email with images and a plain alternative
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="outer-boundary"

This is a MIME-encoded message. If you are seeing this, your mail
reader is old.
--outer-boundary
Content-Type: text/plain; charset=us-ascii

This message might make you :) or it might make you :(

--outer-boundary
MIME-Version: 1.0
Content-Type: multipart/related;
  type="text/html"; start=""; boundary="inner-boundary"

--inner-boundary
Content-Type: text/html; charset=us-ascii
Content-Disposition: inline
Content-ID: 


 
  This message might make you
  smile
  or it might make you
  frown
 


--inner-boundary
Content-Type: image/gif
Content-Disposition: inline
Content-Transfer-Encoding: base64
Content-ID: 

R0lGODlhEAAQAKEBAAAAAP//AP//AP//ACH5BAEKAAIALAAAAAAQABAAAAIzlA2px6IBw2
IpWglOvTahDgGdI0ZlGW5meKlci6JrasrqkypxJr8S0oNpgqkGLtcY6hoFADs=

--inner-boundary
Content-Type: image/gif
Content-Disposition: inline
Content-Transfer-Encoding: base64
Content-ID: 

R0lGODlhEAAQAKEBAAAAAAD//wD//wD//yH5BAEKAAIALAAAAAAQABAAAAIzlA2px6IBw2
IpWglOvTahDgGdI0ZlGW5meKlci75drDzm5uLZyZ1I3Mv8ZB5Krtgg1RoFADs=

--inner-boundary--

--outer-boundary--

24
задан Community 23 May 2017 в 12:17
поделиться