在前面讲了邮件基本知识和发送的协议,那么邮件本身是怎么构成的呢?
一、邮件消息的组成
邮件消息格式是在RFC 822里面规定的。
一个标准的邮件格式分为头部和信体两部分,头部由多个头部行构成。列出最常见的三个。
(1)To:发给谁
(2)From:谁发送的
(3)Subject:邮件的主题
在写邮件时这三个必不可少。
注意:这里的To、From是邮件内容组成部分,这些头部不同于SMTP命令。
头部后再加一个空行之后跟邮件的主体,也就是邮件的信体。
二、多媒体扩展MIME
非英语国家在编写邮件时会在邮件中用自己的语言编写内容,而这些语言没有办法使用标准的ASCII码来描述,这时怎么办呢?人们给出了这样一种解决办法。我们称之为MIME,全称为:多用途因特网邮件扩展。
多用途因特网邮件扩展不仅仅可以发送非英语国家字符,它还可以发送其它类型的内容,例如声音、图像、图片、视频等。这才大大扩展了电子邮件的用途。
MIME在多个RFC中都有描述,例如RFC 2045、2046、RFC 5322等。
MIME通过添加额外的信头头部声明来实现内容的扩展。头部主要使用content-type这样一些字段。
看一下下面这个例子:
前三行是From、To、Subject常用字段。
第四行是MIME版本。
第五行是用来编码数据的方法:这是MIME用来编码数据的核心方法。会将非ASCII码文本的内容用某种编码的方法转化成标准ASCII码。放在邮件里,这样就可以实现用传统的邮件协议传送和接收了。base64是使用最广泛的编码方法。
第六行指明了后面要传送内容的类型。这行包含类型名、子类型名和参数声明。
头部声明后面跟一个空行接下来就是要传送的主体。
三、综合示例
看以下示例:使用SMTP发送带头部的电子邮件。
这个实例使用了命令行操作然后加入了SMTP服务器的用户认证过程同时邮件包含头部。
假设发送者邮箱是163的,接收者的邮箱是qq邮箱。
红色的行号代表客户端发送的命令,黑色的是服务器端给出的响应。
第二行上篇文章讲过已经讲过;
第四行是进行身份认证。
第五行和第七行是服务器给出的回应,回应后面的内容看似乱码,事实上给出的是以base 64编码的短语;
第六行和第八行给出的是以base 64编码的命令。第六行是邮箱名或者是用户名,第八行给出邮箱的密码;
第九行235告诉我们认证通过。第九行和第13行前面已经讲过;
第14行给出data命令表示开始写邮件了;
第16行到第23行是邮件的内容;17行给出了一个邮件地址表示收信人若要回复,可以回复到什么地方。
24行服务器给出一个250的回应表示邮件已经被放到发送队列里面;
25行退出;
这是一个实际的使用SMTP来发送一个带头部邮件的实例。