邮件标准协议:MIME(Multipurpose Internet Mail Extensions)
2019-12-03 20:21 陈心朔 阅读(2893) 评论(0) 编辑 收藏 举报MIME(多用途互联网邮件扩展)指的是一系列电子邮件技术规范 ,主要包括 RFC 2045~2049
传统的电子邮件只能使用 ASCII 字符,导致非英文字符都不能在电子邮件中使用
而且电子邮件中不能插入二进制文件(图片/视频),也没有附件
MIME 是对传统电子邮件的一个扩展,现在已经成为电子邮件实际上的标准
MIME 标准浅析
下面是一封普通的电子邮件 Test Mail 的信件头:
从上面可以看出,这封信的发信人地址是 chen892704@163.com,收信人地址是 sqchen@coremail.cn ,邮件主题是 Test ,发送时间是 2018 年 7 月 19 日
从结构上,这封信分为三个部分:信件头 + 空行 + 信件体
MIME 对传统电子邮件的扩展表现在,它在信件头部分添加了几条语句,主要有:
这条语句标识了这封信使用了 MIME 规范,其中 1.0 的版本号是不变的,即使 MIME 本身已经升级好几次
这条语句表明了传递的信息类型,包含主要类型(primary type)和次要类型(subtype)两部分,两者之间用 “/” 分割
常见的简单类型有:
上例中出现的 multipart 类型是 MIME 邮件的重要内容,邮件体被分为多个段,每个段又包含段头和段体两部分,这两部分之间也以空行分隔
常见的 multipart 类型有三种:multipart/mixed、multipart/related 和 multipart/alternative,它们的层次关系可归纳为下图:
(详细内容参考 Multi-Part MIME Messages)
其中 boundary 表示不同信件内容的分割线,它通常是一个很长的随机字符串
下面观察一下 Test Mail 的邮件体:
从邮件体可以看出,这封邮件的内容包括四部分:
- 纯文本:Hello world
- 超文本:字体、字号等信息
- 图片:cm.jpg
- 附件:rfc2045.txt.pdf
由于电子邮件的传统格式不支持非 ASCII 编码和二进制数据,因此 MIME 规定了第三条语句:
这条语句指明了该块内容的编码转换方式,Content-Transfer-Encoding 的值有五种:7bit、8bit、binary、quote-printable 和 base64
其中 7bit 是缺省值,即不用转化的 ASCII 字符
可以注意到在图片和附件块有一行特殊的语句:
Content-Disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件
Content-Disposition 可以控制用户请求所得的内容为一个文件的时候提供默认的文件名,文件直接在浏览器上显示或者在访问文件时弹出文件下载框
content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )
本例中,cm.jpg 会直接在浏览器中显示(inline),而 rfc2045.txt.pdf 则会以附件形式下载(attachment)