MIME类型,以满足HTML,电子邮件,图像和纯文本?

时间:2012-05-17 07:55:41

标签: email mime

Mail multipart/alternative vs multipart/mixed的答案表明附件应该是multipart/alternative消息的对等,例如:

  • 多部分/混合
    • 多部分/替代
      • 文本/纯
      • text / html的
    • some / thing(处置:附件)
    • some / thing(处置:附件)
    • ...

我希望发送带有html部分的电子邮件,其中包含一些内联图片和纯文字替代品。各个部分的首选MIME布局是什么?在示例代码和其他问题中出现了几个选项,但哪些选项在实践中效果最好?我倾向于这样:

  • 多部分/替代
    • 文本/纯
    • 多部分/相关
      • text / html(通过cid引用图像)
      • 图像/ GIF
      • 图像/ GIF
      • ...

这样,图像显然是为了渲染html部分。一个完整的例子是:

From: Rich Example <rich-example@example.org>
To: A Recipient <recipient@example.org>
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="<body@here>"; boundary="inner-boundary"

--inner-boundary
Content-Type: text/html; charset=us-ascii
Content-Disposition: inline
Content-ID: <body@here>

<html>
 <body>
  This message might make you
  <img src="cid:smile@here" alt="smile">
  or it might make you
  <img src="cid:frown@here" alt="frown">
 </body>
</html>

--inner-boundary
Content-Type: image/gif
Content-Disposition: inline
Content-Transfer-Encoding: base64
Content-ID: <smile@here>

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

--inner-boundary
Content-Type: image/gif
Content-Disposition: inline
Content-Transfer-Encoding: base64
Content-ID: <frown@here>

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

--inner-boundary--

--outer-boundary--

1 个答案:

答案 0 :(得分:9)

你是对的。内联图像应存储在multipart/related mime-entity(RFC 2387)中,并且可以使用multipart/alternative(RFC 2046)提供多种内容类型选项。
要添加附件,您可以将整个结构放入multipart/mixed并添加附件。

  • 多部分/混合
    • 多部分/替代
      • 文本/纯
      • 多部分/相关
        • text / html的
        • 图像/ GIF
        • 图像/ GIF
    • some / thing(处置:附件)
    • some / thing(处置:附件)

您还可以在text / plain消息中使用内联图像,但并非所有MUA都支持此功能。 (使用none或disposition:inline)

  • 多部分/混合
    • text / plain(图片上方的文字)
    • 图像/ GIF
    • text / plain(图片下方的文字)

我不知道将其与多部分/替代HTML电子邮件相结合的简洁方法。