MIME协议分析
第1章. MIME概述
MIME, 全称为“Multipurpose Internet Mail Extensions”, 比较确切的中文名称为“多用途互联网邮件扩展”。它是当前广泛应用的一种电子邮件技术规范,基本内容定义于RFC 2045-2049(注意RFC1521和RFC1522是它的过时版本)。
MIME试图在不改变SMTP协议和RFC822(邮件格式标准)的基础上,使得邮件可以传送任意二进制文件。为此,它在这些协议之上,采取了一些措施,这就是我们下面所要重点讲述的内容。
第2章. MIME详解
2.1. 改进措施
一封邮件包括信封、邮件头和邮件体等三个部分。信封显然可以不含有二进制信息,而其它两部分则可能包含任意二进制序列,因此需要加以改进。MIME正是抓住了这两个地方来对他们加以改进。
1) 新增了一些邮件头信息,用来协商MIME的一些参数。
2) 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
3) 定义了传送编码,从而可以传送任意二进制文件。
在这里,我还是要不厌其烦地强调指出,所有的改进措施都是建立在不改变原来的SMTP协议和RFC822的基础上的。事实上,我们可以把这些改进措施,看成是在用SMTP等发送邮件前所采取的预处理。
2.2. 一封简单邮件的源码
为了对MIME邮件有个直观的了解,先给出一封简单邮件的源码。源码中,行号和行号后的空格是为了分析方便而另外加的,“... ... ... ...”表示此处省略了大段编码。
1 From: "bhw98" <bhw98@sina.com>
2 Reply-To: bhw98@sina.com
3 To: <bluesky7810@163.com>
4 Subject: Re: help
5 X-Mailer: Foxmail 4.2 [cn]
6 Mime-Version: 1.0
7 Content-Type: multipart/alternative;
8 boundary="=====002_Dragon307572345230_====="
9
10
11 This is a multi-part message in MIME format.
12
13 --=====002_Dragon307572345230_=====
14 Content-Type: text/plain; charset="GB2312"
15 Content-Transfer-Encoding: quoted-printable
16
17 bluesky7810=A3=AC=C4=FA=BA=C3=A3=A1
18
19 =A1=A1=A1=A1=D4=DA=CF=C2=C6=AA=D7=EE=BA=F3=BF=C9=D2=D4=CF=C2=D4=D8=B0=A1=A3=AC=C4=E3
... ... ... ...
30 =A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1 2003-04-07
31
32 --=====002_Dragon307572345230_=====
33 Content-Type: text/html; charset="GB2312"
34 Content-Transfer-Encoding: quoted-printable
35
36 <!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.0 Transitional//EN">