1 构成组件
邮件客户端
邮件服务器
SMTP协议 Simple Mail Transfer Protocol
1.1 邮件客户端
读写Email消息
和服务器交互,收发消息
1.2 邮件服务器
邮箱:每位用户都有一个邮箱,存储发给该用户的Email
消息队列:存储等待发送的Email
1.3 SMTP协议(RFC2881)
邮件服务器之间传递消息所使用的协议
客户端:发送消息的服务器
服务端:接受消息的服务器
2 为什么采用这种架构
为什么不直接从发送端到接收端,而要通过服务器?
1)不能保证接收端一直在线
2)如果对方不在线,那么发送端就得不断重试,发送端也不能关闭,知道成功发送
3 传输层协议
采用TCP(保证数据的可靠性)进行Email消息的可靠传输
4 Email其他说明
1)端口25
2)传输过程的三个阶段
握手
消息传输
关闭
3)采用命令/响应交互模式
命令:ASCII文本(由于Email出现很早,最初设计,Email只能包含7位ASCII码)
响应:状态码和语句
4)它是异步的
5 SMTP交互示例
服务器:220 这里是hamburger.edu服务器 客户端:这里是crepes.fr 服务器:250 很高兴见到你 客户端:邮件发送者是<alice@crepes.fr> 服务器:250 发送者没问题 客户端:接受者<bob@hamburger.edu> 服务器:250 接受者没问题 客户端:我要开始发送了 服务器:354 可以,.表示结束 客户端:邮件内容.... 客户端:邮件内容.... 客户端:. 结束 服务器:250 我接受到了邮件 客户端:好的,结束 服务器:221 连接已断开
6 手动尝试SMTP交互
使用telnet软件
7 SMTP的特点
使用持久性连接
要求消息体必须由7位ASCII码构成
SMTP服务器利用CRLF.CRLF确定消息的结束
8 和HTTP简要对比
HTTP:拉式(网页去找服务器要资源) SMTP:推式(服务器推送邮件到客户端)
都使用命令/响应交互模式
命令和状态码都是ASCII码
HTTP:每个对象封装在独立的响应消息中
SMTP:多个对象在由多个部分构成的消息中发送
9 SMTP协议中消息格式
分为头部行和消息体
头部行包括发送者和接受者,邮件标题
消息体包含消息本身
10 MIME(多媒体邮件扩展协议)
由于消息体只能是ASCII字符,那么图片视频等文件怎么发送呢?
这就用到了MIME:多媒体邮件扩展协议(RFC 2045,2056)
通过在邮件头部增加额外的行以申明MIDE的内容类型
11 邮件访问协议
发送端发送邮件(SMTP)到达发送者邮件服务器,然后到达(SMTP)接受者邮件服务器,最后从接收者服务器到达接受者,这里不是采用的SMTP,而是邮件访问协议
邮件访问协议:
POP:Post Office Protocol
IMAP:iNTERNRT mAIL Access Protocol
HTTP:基于浏览器收发邮件时
1)POP3协议
允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。很明显POP是无状态的
2)IMAP
提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。同时,IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP 更好地支持了从多个不同设备中随时访问新邮件。IMAP是有状态的