提示:以下是本篇文章正文内容
一个电子邮件分为信封和内容,邮件内容分为首部和主体两部分。RFC 822规定了邮件的首部格式,邮件的主体部分则让用户自由撰写。
用户写好首部后,邮件系统自动地将信封所需的信息提取出来并写在信封上,用户不需要亲自填写信封上的信息。
邮件内容的首部包含一些首部行,每个首部行由一个关键字后跟冒号再与内容组成。有些关键字是必需的,有些则是可选的。最重要的关键字是To:和Subject
To是必需的关键字,后面填入一个或多个收件人的电子邮件地址。
电子邮件地址的规定格式为:收件人邮箱名@邮箱所在主机的域名
Subject是可选关键字,是邮件的主题,反映了邮件的主要内容
关键字From必填,但它通常由邮件系统自动填入
首部与主体之间用一个空行进行分割
电子邮件是一种异步通信方式,通信时不需要双方同时在场,发送者把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可以随时上网到自己使用的邮件服务器进行读取
Email的构成组件
(1)邮件客户端(user agent)
1.用户可以读、写Email消息
2.与服务器交互,收、发Email消息
3.常见的应用:Outlook, Foxmail, Thunderbird
4.Web客户端
(2)邮件服务器(组成电子邮件系统的核心)
1.邮箱:存储发给该用户的Email或收到的邮件
2.消息队列(message queue):存储等待发送的Email
3.邮件服务器采用客户/服务器方式工作,但它能够同时充当客户和服务器
(3)电子邮件使用的协议(SMTP、POP3)
1.邮件发送协议:用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,通常使用的是SMTP
2.邮件读取协议: 用于用户代理从邮件服务器读取邮件,如POP3
SMTP采用的是”推“(Push)的通信方式,即在用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件时,SMTP客户端主动将邮件“推”送到SMTP服务器端
POP3采用的是“拉”(Pull)的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件
SMTP协议是邮件服务器之间传递消息所使用的协议:
SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息,负责发送邮件的SMTP进程是SMTP客户,负责接收邮件的进程是SMTP服务器。SMTP规定了14条命令和21种应答信息
(1)客户端:发送消息的服务器
(2)服务器:接收消息的服务器
(3)使用TCP进行email消息的可靠传输
(4)邮件对应的端口为25
(5)传输过程的三个阶段
1.握手(建立连接)
2.消息的传输(邮件传送)
3.关闭(释放连接)
(6)命令/响应交互模式
命令(command): ASCII文本
响应(response): 状态代码和语句
(7)Email消息只能包含7位ASCII码
发件人的邮件发送到发送方邮件服务器的邮件缓存中后,SMTP客户就每隔一定 时间对邮件缓存扫描一次,如发现有邮件,就使用SMTP的端口号(25) 与接收方邮件服务器的SMTP服务器建立TCP连接
连接建立后,接收方SMTP服务器发出220 Service ready (服务就绪),然后SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名
注:TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立,不使用中间邮件服务器
连接建立后,就可开始传送邮件, 邮件的传送从MAIL命令开始,MAIL 命令后面有发件人的地址
若SMTP服务器已准备好接收邮件,则回答250 OK
然后SMTP客户端发送一个或多个RCPT命令,格式为RCPTTO: <收件人地址>,每发送一个 RCPT命令,都有相应的信息从SMTP服务器返回,如250 OK或550 No such user here (无此用户)
RCPT命令的作用是:了解接收方系统是否已做好接收邮件的准备,然后才发送邮件,以便不至于发送了很长的邮件后才知道地址错误,进而避免浪费通信资源,
获得0K的回答后,客户端就使用DATA命令,表示要开始传输邮件的内容,正常情况下,SMTP服务器回复信息是354 Enter mail , end with “.” …,此时SMTP客户端就可开始传送邮件内容,后面语句表示邮件内容的结束
邮件发送完毕后,SMTP客户应发送QUIT命令
SMTP服务器返回的信息是221 (服务关闭),表示SMTP同意释放TCP连接, 邮件传送的全部过程就此结束
注:SMTP服务器利用CRLF.CRLF确定消息的结束,使用持久性连接
常用命令与SMTP服务器交互
HELO
MAIL FROM
RCPT TO
DATA
QUIT
由于SMTP只能传送一定长度的ASCII码,非英语国家的文字就无法传送,且无法传送可执行文件及其他二进制对象,因此提出了多用途网络邮件扩充
( Multipurpose Internet MailExtensions,MIME),通过在邮件头部增加额外的行以声明MIME的内容类型
MIME并未改动SMTP或取代它,MIME的意图是继续使用目前的格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则
MIME主要包括以下三部分内容:
①5个新的邮件首部字段,包括MIME版本、内容 描述、内容标识、内容传送编码和内容类型
②定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
③定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变
POP3协议是邮件访问协议:从服务器获取邮件,邮局协议( Post Office Protocol, POP) 是一个非常简单但功能有限的邮件读取协议,现在使用的是它的第3个版本POP3
POP: Post Office Protocol [RFC 1939] 认证/授权(客户端<—>服务器)和下载
POP3 采用的是“拉”(Pull)的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件, 首先要进行认证,然后才可以进入事务阶段,进行获取邮件
POP使用客户/服务器的工作方式,在传输层使用TCP,端口号为110
POP有两种工作方式:“下载并保留”和“下载并删除”
(1)用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件
(2)下载并删除
邮件一旦被读取,就被从邮件服务器上删除,用户不能再次从服务器上读取
注:POP3是无状态的
因特网报文存取协议(IMAP), 它比POP复杂得多,IMAP为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件的命令,为此IMAP服务器维护了会话用户的状态信息
(1)所有消息统一保存在一个地方:服务器
(2)允许用户利用文件夹组织消息
(3)IMAP支持跨会话(Session)的用户状态:
文件夹的名字
文件夹与消息ID之间的映射等
IMAP允许用户代理只获取报文的某些部分,例如可以只读取一个报文的首部,或一个多部分MIME报文的一部分。这非常适用于低带宽的情况,用户可能并不想取回邮箱中的所有邮件,尤其是包含很多音频或视频的大邮件
POP3和IMAP的区别:
POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作邮件,是不会反馈到服务器上,比如通过客户端读取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的邮件不会改变
而IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作
随着万维网的流行,目前出现了很多基于万维网的电子邮件,如163, QQ Mail
用户浏览器与web的邮件服务器之间的邮件发送或接收使用的是HTTP,而仅在不同邮件服务器之间传送邮件时才使用SMTP
提示:这里对文章进行总结: