一封邮件的发送和接收过程:
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)定义了邮件客户端与SMTP服务器之间,以及两台SMTP服务器之间发送邮件的通信规则 。SMTP协议属于TCP/IP协议族,通信双方采用一问一答的命令/响应形式进行对话,且定了对话的规则和所有命令/响应的语法格式。
用户代理
用户代理UA(User Agent)是用户与电子邮件系 统的交互接口,一般来说它就是我们PC机上的一个程序。Windows上常见的用户代理是Foxmail和Outlook Express。
用户代理提供一个好的用户界面,它提取用户在其界面填写的各项信息,生成一封符合SMTP等邮件标准的邮件,然后采用SMTP协议将邮件发送到发送端邮件服务器。
邮件服务器
邮件服务器是电子邮件系统的核心,它用来发送和接收邮件。邮件服务器不同于普通PC的是它几乎是全天工作的,所以它可以在任何时候为用户提供服务,很多ISP都提供免费的邮件服务器,如126提供smtp.126.com邮件服务器。邮件服务器向其它邮件服务器转发邮件也是采用SMTP协议。
一般情况下,一封邮件的发送和接收过程如下。
1) 发信人在用户代理里编辑邮件,包括填写发信人邮箱、收信人邮箱和邮件标题等等。
2) 用户代理提取发信人编辑的信息,生成一封符合邮件格式标准(RFC822)的邮件。
3) 用户代理用SMTP将邮件发送到发送端邮件服务器(即发信人邮箱所对应的邮件服务器)。
4) 发送端邮件服务器用SMTP将邮件发送到接收端邮件服务器(即收信人邮箱所对应的邮件服务器)。
5) 收信人调用用户代理。用户代理用POP3协议从接收端邮件服务器取回邮件。
6) 用户代理解析收到的邮件,以适当的形式呈现在收信人面前。
一个具体的SMTP通信(如发送端邮件服务器与接收端服务器的通信)的过程如下。
1) 发送端邮件服务器(以下简称客户端)与接收端邮件服务器(以下简称服务器)的25号端口建立TCP连 接。
2) 客户端向服务器发送各种命令,来请求各种服务(如认证、指定发送人和接收人)。
3) 服务器解析用户的命令,做出相应动作并返回给客户端一个响应。
4) 2)和3)交替进行,直到所有邮件都发送完或两者的 连接被意外中断。
SMTP命令格式 | 说明 |
ehlo |
ehlo命令是SMTP邮件发送程序与SMTP邮件接收程序建立连接后必须发送的第一条SMTP命令,参数 ehlo命令用于替代传统SMTP协议中的helo命令。 |
auth |
如果SMTP邮件接收程序需要SMTP邮件发送程序进行认证时,它会向SMTP邮件发送程序提示它所采用的认证方式,SMTP邮件发送程序接着应该使用这个命令回应SMTP邮件接收程序,参数 |
mail |
此命令用于指定邮件发送者的邮箱地址,参数 |
rcpt |
此命令用于指定邮件接收者的邮箱地址,参数 |
data |
此命令用于表示SMTP邮件发送程序准备开始输入邮件内容,在这个命令后面发送的所有数据都将被当做邮件内容,直至遇到“ |
quit |
此命令表示要结束邮件发送过程,SMTP邮件接收程序接收到此命令后,将关闭与SMTP邮件发送程序的网络连接。 |
常用的响应如下所示:
220<domain>服务就绪
250要求的邮件操作完成
235 用户验证成功
334 等待用户输入验证信息
354开始邮件输入,以"."结束
221<domain>服务关闭
响应状态码的最高位数字代表了不同的分类,当其为 2 时表示命令执行成功;为5时表示命令执行失败;为3时表示命令没有完成。
注意:
使用"auth login"命令登录到Smtp服务器,登录使用的用户名和密码必须经过Base64加密。
邮件头使用下面的三个字段来指明
参考:
http://www.cnblogs.com/foxmin/archive/2011/10/16/2214417.html
http://www.cnblogs.com/xdp-gacl/p/4209586.html(推荐)
http://www.cnblogs.com/diegodu/p/4097202.html