RFC822邮件内容
在RFC822文档中定义,邮件内容包括两个主要的组成部分:邮件头和邮件体
邮件头部包括以下内容:
Return-Path该字段代表邮件的回复地址
Received该字段格式为Received from A by B from C(A为发送方,B为接收方,C为收件人的邮件地址)是在SMTP服务器传递过程中加上的,内容由接收邮件的SMTP服务器填写,常常被用来追踪邮件传输的路线和分析邮件的来源
From代表发件人地址
to代表指定收件人地址
subject邮件的主题
date指定邮件的发送时间
cc抄送地址
bcc暗送地址
以上所有的部分是针对文本的一些协议,不能传送多媒体格式的数据。这一部分的邮件格式对应的RFC有:RFC822、RFC2822、RFC5322.目前几乎都采用RFC822的格式。
MIME协议
由于RFC822邮件格只适合用来表达纯文本的邮件内容,如果要发送非ASC||码的二进制数据时,就需要先采用某种编码方式将他们“编码”成可打印的ASC||字符后再作为RFC822邮件格式的内容
这部分的邮件格式的RFC有:RFC2045、RFC2046、RFC2047、RFC2048、RFC2049这5份RFC分别定义一部分,共同定义了多媒体格式的内容。RFC2231是对MIME的扩展。
针对这个问题,后来人们为此定义了MIME(Multipurpose Internet Mail Extension,多用途Internet邮件扩展)协议
MIME协议用于定义复杂邮件体的格式,可以在邮件体中内嵌图片数据和附件。
一个采用了MIME协议的电子邮件就叫做MIME邮件,MIME邮件和普通的RFC822邮件的关系犹如Java编程语言中的子类和父类的关系。MIME邮件在RFC822文档中定义了邮件头字段的基础上,扩充了一些自己的邮件头字段,例如,使用了MIME-Version头字段指定MIME协议的版本,使用Content-Type头字段指定邮件体的MIME类型,使用Content-Transfer-Encoding头字段指定编码方法
MIME消息的头字段Content-Type有三种类型:multipart/mixed、multipart/related、multipart/alternative(一封MIME邮件中的MIME消息可以有这三种组合关系)
其中multipart/mixed表示内容是混合组合类型,内容可以是文本、声音和附件等不同邮件内容的混合体
multipart/related表示消息体的内容是关联(依赖)组合类型,例如正文使用HTML代码引用内嵌图片资源等等
multipart/alternative表示消息体中的内容是选择组合类型,例如一封邮件的正文同时采用HTML格式和普通文本格式进行表达。这样做的好处在于如果邮件阅读程序不支持HTML格式时,可以采用其中的文本格式进行替换
其他的头字段包括数据内容的方式,
处理Content-Transfer-Enconding头字段:指定MIME消息体中的内容采用的邮件编码方式
Content-Disposion头字段指定邮件阅读程序有inline(直接处理)和attachment(当做附件处理)两种标准方式,如果设置为attachment的话,在其后还可以指定filename属性
Content-ID头字段用于为“multipart/related”组合消息中的内嵌资源指定一个唯一标识号,在正文中可以使用这个标识号引用该内嵌资源
Content-Location头字段用于为内嵌资源设置一个URI地址,这个URI地址可以是绝对或相对的
Content-Base头字段用于为内嵌资源设置一个基准路径
MIME邮件的编码方式:比较常用的两种邮件编码方式为BASE64和Quoted-printable。
后来的扩展SMTP协议允许直接在邮件中传递二进制数据,而不用对他们进行邮件编码。人们将这种没有进行邮件编码的二进制数据的邮件内容称为8bit编码,而没有进行邮件编码的纯ASC||码字符的邮件称为7bit编码
BASE64是将二进制数据转换成可打印的ASC||字符的一种常见的编码方式
Quoted-printable也是一种将二进制数据转成可以打印的ASC||字符的编码方式,它对ASC||字符不进行转换,只对非ASC||字符的数据进行编码转化。
说明:有一些邮件的传播病毒的原理就是去修改邮件的类型和实际类型,让一个.exe类型的文件伪装成其他文件,当用户点击就运行了病毒。例如
Content-Type:audio/x-way;name="readme.exe"(把一个exe文件定义成一个wav文件)
可以考虑邮件系统开发中除了防病毒还有其他什么需要注意的,例如垃圾邮件(可以限制每天每个用户最多能发多少封邮件)等等,然后应该怎么处理
后语:目前应用最广泛的一种邮件格式规范就是MIME,邮件客户端几乎都是采用这种格式。