Skip to main content

5. Composite Media Type Values (复合媒体类型值)

两种复合顶级媒体类型是: multipart和message.

5.1. Multipart Media Type (多部分媒体类型)

multipart类型用于将多个body part组合成单个消息. 每个part都是一个独立的实体, 具有自己的头部和正文.

5.1.1. 通用语法

所有multipart类型共享通用语法. boundary参数是必需的:

Content-Type: multipart/mixed; boundary="----=_Part_0_123456789.987654321"

------=_Part_0_123456789.987654321
Content-Type: text/plain

First part content

------=_Part_0_123456789.987654321
Content-Type: text/html

<html>Second part content</html>

------=_Part_0_123456789.987654321--

5.1.3. Mixed子类型

multipart/mixed用于需要按顺序呈现的独立part.

用途: 邮件正文 + 附件

Content-Type: multipart/mixed; boundary="boundary123"

--boundary123
Content-Type: text/plain

邮件正文

--boundary123
Content-Type: application/pdf
Content-Disposition: attachment; filename="document.pdf"

[PDF数据]

--boundary123--

5.1.4. Alternative子类型

multipart/alternative用于同一内容的不同表示. 邮件客户端应选择最后一个它能理解的版本.

用途: 纯文本 + HTML版本

Content-Type: multipart/alternative; boundary="alt123"

--alt123
Content-Type: text/plain

纯文本版本

--alt123
Content-Type: text/html

<html><body>HTML版本</body></html>

--alt123--

5.1.5. Digest子类型

multipart/digest用于转发多个消息. 默认的part类型是message/rfc822.

5.1.6. Parallel子类型

multipart/parallel表示part应该同时呈现.

5.1.7. 其他Multipart子类型

  • multipart/related: 相关part (如HTML + 内嵌图片)
  • multipart/form-data: HTML表单文件上传
  • multipart/byteranges: HTTP范围请求

5.2. Message Media Type (消息媒体类型)

message类型用于封装另一个消息.

5.2.1. RFC822子类型

message/rfc822用于封装完整的RFC 822消息.

Content-Type: message/rfc822

From: [email protected]
To: [email protected]
Subject: Forwarded message

This is the forwarded message content.

5.2.2. Partial子类型

message/partial用于将大消息分成多个片段.

参数:

  • id: 唯一标识符
  • number: 片段编号
  • total: 总片段数
Content-Type: message/partial; 
id="[email protected]";
number=1;
total=3

5.2.3. External-Body子类型

message/external-body用于引用存储在其他位置的数据.

访问类型:

  • ftp: FTP服务器
  • http: HTTP URL
  • local-file: 本地文件
  • mail-server: 邮件服务器
Content-Type: message/external-body;
access-type=URL;
URL="http://example.com/file.pdf"

Content-Type: application/pdf
Content-Description: Large PDF File

典型的多层嵌套结构:

multipart/mixed (整个邮件)
├─ multipart/alternative (正文)
│ ├─ text/plain (纯文本版本)
│ └─ multipart/related (HTML版本)
│ ├─ text/html (HTML)
│ └─ image/png (内嵌图片)
└─ application/pdf (附件)

关键概念:

  • boundary: 分隔符, 必须唯一
  • preamble: boundary前的文本 (被忽略)
  • epilogue: 最后boundary后的文本 (被忽略)
  • 递归性: multipart可以包含multipart