电子邮件
- 用户代理
- 又名“文件阅读器”
- 用来撰写编辑和阅读邮件:比如QQ邮箱
- 输出和输入邮件保存在服务器上
- 邮件服务器
- 邮箱中管理和维护发送给用户的邮件
- 输出报文队列保持待发送文件报文
- 邮件服务器之间的SMTP协议发送email报文
- 客户:发送方邮件服务器
- 服务器:接收端邮件服务器
- 发送过程:用户代理配置好邮件服务器的IP地址和端口号,通过邮件服务器发邮件把用户代理的邮件发到邮件服务器发送队列中,邮件服务器发出以后发到指定邮件服务器(SMTP协议),邮件服务器把邮件放到用户的邮箱中,然后用户代理把邮件从邮箱拉回邮件阅读(拉回的过程可以用三个协议:HTTP,IMAP,POP3)。
- 邮件报文格式
- RFC822是文本报文的标准
- 包括
- 首部行(与SMTP命令不同!!!)比如CC:抄送;
- 主题:报文,只能是ASCII字符
- 多媒体扩展
- 使用情况:比如写中文邮件的时候可能不在ASCII范围之内
- MIME 多媒体邮件扩展(multimedia mail extension)【RFC2045,2056】它使得邮件可以使用其他编码方式比如base64吧若干个不在ASCII码字符范围的字节转化为更长的,在ASCII码范围的字符。然后MIME将这些编码转化为ASCII码。使得邮件可以用SMTP协议传输。
- 在报文首部用额外的行申明MIME内容类型
SMTP协议(RFC 2821)
- 使用TCP在客户端和服务器之间传输报文,端口号是25
- 直接传输:从发送方服务器到接收方服务器
- 传输的三个阶段
- 握手
- 传输报文
- 关闭
- 命令/响应交互
- 命令:ASCII文本
- 响应:状态码和状态信息
- 报文(首部和主体)必须是7位ASCII码
- 简单SMTP交互例子
- SMTP使用持久连接
- SMTP服务器使用CRLF和CRLF决定报文的尾部
- HTTP比较:
- HTTP: 拉(pull);SMTP: 推(push)
"HTTP是拉的,SMTP是推的"这句话是对HTTP和SMTP两种协议工作方式的简单描述。
HTTP(超文本传输协议)主要是一个拉协议(pull protocol),也就是说,当你在浏览器中输入一个网址时,你的浏览器(客户端)会向服务器发送一个请求,要求服务器发送回网页的内容。这个过程就像你去书店买一本书,你告诉售货员你想要的书,然后售货员把书给你。
相反,SMTP(简单邮件传输协议)主要是一个推协议(push protocol),也就是说,当你发送一封电子邮件时,你的邮件服务器会把邮件推送到收件人的邮件服务器。这个过程就像你邮寄一封信,你把信放在邮筒里,然后邮局的工作人员会把信送到收件人的邮箱。
总的来说,"拉"和"推"是描述数据传输方向的术语,"拉"是由接收方发起请求,"推"是由发送方发起传输。
- 二者都是ASCII 形式的命令/相应交互。状态码
- HTTP每个对象分装在各自的相应报文中,SMTP多个对象包含在一个报文中
HTTP仅仅传输一个HTTP对象过去不包含其他对象的实体(最多包含实体的链接)但是SMTP可以传输多个对象,比如发邮件可以添加附加文件。图片等等。
- HTTP: 拉(pull);SMTP: 推(push)
POP3协议
- 下载并删除通常指的是从某个位置下载文件或数据,然后在下载完成后将其从该位置删除。这是一种临时性的操作,用于获取所需的文件而不保留副本。
- 下载并保留则意味着下载文件或数据后,将其保留在指定的位置。这是为了长期保存或备份文件。
- 当你使用POP3获取邮件时,邮件会被下载到你的本地设备(比如你的电脑或手机),并且通常会从邮件服务器上删除。这就是所谓的"本地管理文件夹",因为你的邮件实际上是存储在你的设备上,你可以在本地进行管理,比如删除、移动邮件等。
IMAP协议
- 当你使用IMAP获取邮件时,邮件会保留在邮件服务器上,你的设备只是同步服务器上的邮件信息。这就是所谓的"远程管理文件夹",因为你的邮件实际上是存储在邮件服务器上,你可以在任何设备上查看和管理你的邮件,只要这个设备可以连接到邮件服务器。