MIME, чтобы удовлетворить HTML, электронную почту, изображения и простой текст?
Ответ на Mail multipart/alternative vs multipart/mixed предполагает, что вложения должны быть одноранговыми сообщениями multipart/alternative
, например:
- многочастному/смешанная
- многочастный/альтернативный
- Текст/равнина
- Текст /HTML
- some/thing (расположение: вложение)
- some/thing (расположение: вложение)
- ...
Я бы хотел отправить электронное письмо с помощью html-части с некоторыми встроенными изображениями и простой текстовой альтернативой. Каков предпочтительный макет MIME для различных частей? Несколько вариантов отображаются в примере кода и в других вопросах, но которые лучше всего работали на практике? Моя склонность такова:
- многочастный/альтернативный
- Текст/равнина
- многочастному/родственный
- text/html (ссылки на изображения с помощью cid)
- изображение /GIF
- изображение /GIF
- ...
Таким образом, изображения явно предназначены для рендеринга html-части. Полный пример этого:
From: Rich Example <[email protected]>
To: A Recipient <[email protected]>
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="<[email protected]>"; boundary="inner-boundary"
--inner-boundary
Content-Type: text/html; charset=us-ascii
Content-Disposition: inline
Content-ID: <[email protected]>
<html>
<body>
This message might make you
<img src="cid:[email protected]" alt="smile">
or it might make you
<img src="cid:[email protected]" alt="frown">
</body>
</html>
--inner-boundary
Content-Type: image/gif
Content-Disposition: inline
Content-Transfer-Encoding: base64
Content-ID: <[email protected]>
R0lGODlhEAAQAKEBAAAAAP//AP//AP//ACH5BAEKAAIALAAAAAAQABAAAAIzlA2px6IBw2
IpWglOvTahDgGdI0ZlGW5meKlci6JrasrqkypxJr8S0oNpgqkGLtcY6hoFADs=
--inner-boundary
Content-Type: image/gif
Content-Disposition: inline
Content-Transfer-Encoding: base64
Content-ID: <[email protected]>
R0lGODlhEAAQAKEBAAAAAAD//wD//wD//yH5BAEKAAIALAAAAAAQABAAAAIzlA2px6IBw2
IpWglOvTahDgGdI0ZlGW5meKlci75drDzm5uLZyZ1I3Mv8ZB5Krtgg1RoFADs=
--inner-boundary--
--outer-boundary--
Ответы
Ответ 1
Вы правы. Встроенные изображения должны храниться в mime-объекте multipart/related
(RFC 2387), и предлагать несколько вариантов содержимого можно с помощью multipart/alternative
(RFC 2046).
Для добавления вложений вы можете поместить всю структуру в multipart/mixed
и добавить вложения.
- многочастному/смешанная
- многочастный/альтернативный
- Текст/равнина
- многочастному/родственный
- Текст /HTML
- изображение /GIF
- изображение /GIF
- some/thing (расположение: вложение)
- some/thing (расположение: вложение)
Вы также можете использовать встроенное изображение в текстовых/простых сообщениях, но не все MUA поддерживают это. (Использовать ни один или расположение: встроенный)
- многочастному/смешанная
- text/plain (текст выше)
- изображение /GIF
- text/plain (текст ниже)
И я не знаю, как сочетать это с многостраничным/альтернативным HTML-адресом.