多用途互联网邮件扩展协议

Understanding MIME Headers

MIME 头部包含有关协议的信息。

MIME-Version

这表明该消息为 MIME 格式。显示为:

MIME-Version: 1.0

Content-Type

这表示消息的内容类型,以类型和子类型对的形式给出,例如 text/plain、text/html。multipart 内容类型可以包含文本、HTML、附件、图像、音频、视频等。

Content-Type: multipart

Content-Transfer-Encoding

指示是否在 content-type 指定的编码之上使用二进制到文本的编码方案。如果使用,说明是哪一种。我们可以在此指定 7-bit、8-bit 和 binary 编码类型。

Encoded-Word

SMTP 消息头通常使用 ASCII 字符。非 ASCII 字符必须使用 MIME 编码词语法,而不是文字字符串。格式如下:

"=? charset ? encoding ? encoded text ?=".

Multipart-Messages

MIME multipart 消息在 content-type 头部中包含一个边界。此边界不得出现在任何部分中,它放置在各部分之间以及消息正文的开头和结尾,如下所示:

MIME-version: 1.0


 Content-type: multipart/mixed; boundary="frontier"

This is a multi-part message in MIME format.

--frontier

Content-type: text/plain

This is the body of the message.

--frontier

Content-type: application/octet-stream

Content-transfer-encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg

Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==

--frontier--

每个部分由其自己的内容头部和正文组成。

Multipart 子类型

MIME 标准定义了各种 multipart 消息子类型。子类型在整体消息的 “Content-Type” 头部中指定。

以下是最常用的子类型列表。

  • Mixed:Multipart/mixed 用于在正文中发送具有不同 “Content-Type” 头的文件。如果发送图片或其他易读文件,大多数邮件客户端会在正文中直接显示它们。
  • Message:消息部分包含一封电子邮件。
  • Digest:Digest 是一种发送多条文本消息的简易方式。每个部分的默认 content-type 为 "message/rfc822"。
  • Alternative:替代子类型表示每个部分都是相同(或相似)内容的“替代”版本,每个以其 “Content-Type” 头部标示的不同格式呈现。

最常见的是 multipart/alternative,用于包含两个部分的电子邮件,一个纯文本 (text/plain) 和一个 HTML (text/html)。纯文本部分提供向后兼容性,而 HTML 部分允许使用格式和超链接。大多数邮件客户端提供用户选项,以在 HTML 之上偏好纯文本;这就是本地因素可能影响应用程序选择显示哪一“最佳”部分的示例。