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 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。同时,IMAPPOP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP 更好地支持了从多个不同设备中随时访问新邮件。IMAP是有状态的