首先,来介绍一下比较常见的因特网电子邮件的流程框图,先来直观感受一下,假设发送的邮件的用户名为为小明,接收邮件的用户为小红。
图1:电子邮件协议及其通信实体
其中,在接收端邮件服务器(E-mail Server)与接收用户代理(User Agent)之间常用的协议有:POP3(Post Office Protocol-Version3)和IMAP(Internet Mail Access Protocol),他们都是基于TCP传输协议
上图中,小明要发送邮件,他的用户代理(可以理解为小明电脑里的Foxmail应用程序)就通过SMTP协议将邮件发送到他的邮件服务器,邮件服务器将此邮件加入到邮件服务器的发送邮件队列中。然后小明的邮件服务器再通过SMTP协议将此邮件发送到小红的邮件服务器中。但是,如何将小红邮件服务器中的邮件发送到小红的电脑上?如果继续使用SMTP协议,可以吗?
答案是不可以的。
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP),它是用于发送方的邮件服务器发送报文到接收方邮件服务器。它是一种推协议,即它是由要求发送文件的一方首先发起请求,将文件推送出去。另外,作为对比,介绍一下拉协议,拉协议有很多,比如HTTP,HTTP可以由需要资源的一方发起,比如说用户,在web上浏览网页的时候,打开一个链接,这个时候用户端的浏览器发送一个HTTP请求到服务器,服务器再将请求的资源通过HTTP响应报文的形式发送回来,这是一种用户主动请求,然后再将资源发过来的过程。他们都是基于TCP协议
上图中,小红的邮件服务器接收到来自小明的邮件之后,但是这个时候,小红的电脑处于关机状态,如果使用SMTP协议,邮件服务器发送请求,但是没有响应,过一段时间再发请求,一直没有响应,这样会造成资源的浪费,也很不合理。所以就需要用到POP3和IMAP协议。
POP3是一种极为简单的邮件访问协议,功能上较IMAP要差些。POP3按照3个阶段进行工作:特许、事务处理以及更新。
1、特许阶段,用户代理发送用户名和口令
2、事务处理阶段:用户代理取回报文;还可以对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息
3、更新阶段:结束该POP3会话;这个时候该邮件服务器删除那些被标记的删除的报文。
总结起来就是:先是发送用户的信息进行登录,然后具体的操作,是看邮件呢,还是删邮件,最后是结束会话。
再介绍IMAP之前,来介绍一下POP3的很大的缺点,它不是双向的。当用户用用户代理将邮件存储在本地之后,在本地所进行的对邮件的删除等操作,不会对用户的邮件服务器造成影响。但是IMAP解决了这样的问题
IMAP是一种邮件访问协议,但是它比POP3有更多的特色,但同时也比POP3要更复杂。它是双向的,将本地的邮件与远程的服务器联系起来。在本地所进行的操作可以与邮件服务器同步。
来看一下QQ邮箱中对于POP3和IMAP的区别的介绍:
POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件、标记已读等),这是不会反馈到服务器上的,比如:您通过电子邮件客户端收取了QQ邮箱中的3封邮件并移动到了其他文件夹,这些移动动作是不会反馈到服务器上的,也就是说,QQ邮箱服务器上的这些邮件是没有同时被移动的 。但是IMAP就不同了,电子邮件客户端的操作都会反馈到服务器上,您对邮件进行的操作(如:移动邮件、标记已读等),服务器上的邮件也会做相应的动作。也就是说,IMAP是“双向”的。
同时,IMAP可以只下载邮件的主题,只有当您真正需要的时候,才会下载邮件的所有内容。
最后一句话的意思,当你的网不好的时候,只能看到邮件的题目时,下次等你网络好的时候,就可以看到全部邮件的内容了。
除了这两种协议之外,还可以使用HTTP协议来访问邮件,这种情况发生在用Web浏览器来收发电子邮件,就比如我打开网页版QQ邮箱,我们可以通过HTTP协议来实时的收发邮件。
下面,是我的亲身实践:
这个是我本地FOXMail上的QQ邮箱,邮箱类型为POP3类型
这个是我本地FOXMail上的163邮箱,邮箱类型为IMAP类型
我删除本地的FOXMail上的QQ邮箱上的一个邮件,
删除红色标记的邮件,这个时候我使用浏览器打开我的QQ邮箱,即通过HTTP协议来访问我的邮箱服务器。
没有删除
下面来实验我的邮箱类型为IMAP的163邮箱
这是我的FOXMail上的邮件的一部分,删除红色条框的邮件,
用浏览器打开我的163邮箱,果然删除了。