#1 MIME 编码
Email MIME 2018-05-19说明
多用途互联网邮件扩展
Multipurpose Internet Mail Extensions
最初的电子邮件标准 RFC 822 只支持发送 ASCII 字符文本内容,通过 MIME 这个拓展(RFC 2822),可以发送所有类型的内容。
后面的 HTTP 协议也是在 MIME 这个框架内构建的,Web 开发者比较熟悉的那几个 Content-xxx 头就是从 MIME 里面来的。
规范文件
| RFC No. | Type | Title |
|---|---|---|
| RFC 2045 | Standards Track | Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies |
| RFC 2046 | Standards Track | Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types |
| RFC 2047 | Standards Track | MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text |
| RFC 2048 | Best Current Practice | Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures |
| RFC 2049 | Standards Track | Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples |
语法
MIME-Version: 1.0 // MIME 版本
Content-Type: [type]/[subtype]; parameter // 内容类型
Content-Transfer-Encoding: [encoding] // 内容传输编码
Content-Disposition: [disposition] // 内容配置
内容类型 Content-Type
又叫互联网媒体类型(Internet media type)或者 MIME 类型(MIME type)。
类型信息的注册事宜,由 IANA(Internet Assigned Numbers Authority)统一管理。
按照注册来源分成几种类型,只用关心标准数,这个了解一下就行了:
- 标准树
类型名 / 子类型名 [ + 后缀 ] [ ; 可选参数 ] - 厂商树
类型名 / vnd.子类型名 [ + 后缀 ] [ ; 可选参数 ],例如:application/vnd.debian.binary-package - 个人树
类型名 / prs.子类型名 [ + 后缀 ] [ ; 可选参数 ] - 未注册的 x.树
类型名 / x.子类型名 [ + 后缀 ] [ ; 可选参数 ]
常见的类型
详细类型在 IANA 官网有,链接在下面参考资料部分我贴了一个。
| Type | Subtype | Description |
|---|---|---|
| text | plain | 文本 |
| text | html | HTML |
| text | xml | XML |
| text | javascript | JavaScript |
| text | css | CSS |
| text | csv | CSV |
| text | vcard | vCard 电子名片 |
| image | bmp | |
| image | jpeg | |
| image | png | |
| image | gif | |
| image | webp | |
| image | svg+xml | |
| image | icon | |
| audio | mpeg | |
| audio | mp4 | |
| audio | ogg | |
| audio | webm | |
| audio | flac | |
| video | mpeg | |
| video | mp4 | |
| video | ogg | |
| video | webm | |
| application | xml | XML |
| application | json | JSON |
| application | ecmascript | |
| application | javascript | |
| application | zip | |
| application | gzip | |
| application | ||
| application | rss+xml | |
| application | atom+xml | |
| application | octet-stream |
内容传输编码
编码类型主要是这几种:“7bit”,“8bit”,“binary”,“quoted-printable”,“base64”。