简单邮件传输协议SMTP

1. SMTP协议概述
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是由源地址到目的地址传送邮件的一组规则,用来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它使每台计算机在发送或中转信件时能找到下一个目的地。通过使用指定的服务器,把Email寄到收信人的服务器上。

SMTP服务器是遵循SMTP协议的邮件服务器,用来发送或中转电子邮件。首先, 客户端需要建立一个与SMTP服务器的TCP连接 端口一般为25 。在连接建立之后,客户端和服务器先执行一些应用层的握手操作,让SMTP服务器知道客户端的信息,并且对客户端需求做出响应等。

在SMTP握手阶段,客户端向SMTP服务器分别指定发件人和收件人的电子邮件地址。握手阶段完毕,SMTP服务器把客户端发出的邮件消息添加到发信队列中,通过TCP提供的可靠数据传输服务把该消息准确地传送到收件人的服务器。

连接和发送过程如下:
(1)建立TCP连接。
(2)客户端发送 HELO 命令以标识发件人自己的身份,客户端发送 MAIL 命令。服务器以OK作为响应,表明准备接收。
(3)使用 AUTH 命令登录SMTP服务器,输入用户名和密码(注意,用户名和密码都需要base64加密)。
(4)客户端发送 RCPT 命令,标识该电子邮件的计划接收人,可以有多个RCPT行。服务器以OK作为响应,表示愿意为收件人发送邮件。
(5)协商结束后,使用 DATA 命令发送。
(6)以 . 号表示结束,输入内容一起发送出去,结束此次发送,用 QUIT 命令退出。

一个电子邮件系统应具有三个主要组成构件,用户代理、邮件服务器、SMTP和POP3(注:POP3是邮局协议(Post Office Protocol)的版本3),如下图:

 简单邮件传输协议SMTP_第1张图片

说明:

1、用户代理UA(User Agent)就是用户与电子邮件系统的接口,在大多数情况下它就是运行在用户PC机中的一个程序,因此又称为电子邮件客户端软件,如Outlook Express、Foxmail等;

2、电子邮件地址的一般格式为:

收件人邮箱名@邮箱所在主机的域名

SMTP协议简介:

SMTP规定了在两个互相通信的SMTP进程之间应如何交换信息。由于SMTP采用C/S格式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接受邮件的SMTP进程就是SMTP服务器。SMTP规定了14条命令和21种应答信息。每条命令用4个字母组成,而每一种应答信息一般只有一行信息,由一个3位数字的代码开始,后面附上(也可不附)很简单的文字说明。其主要过程如下:

1、连接建立

SMTP客户每隔一定时间对邮件缓存扫描一次。如发现有邮件,就使用SMTP的熟知端口号码25与接收方邮件服务器的SMTP服务器建立TCP连接。在建立连接后,接收方SMTP服务器要发出“220 Service ready”(服务就绪)。然后SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。SMTP服务器若有能力接收邮件,则回答:“250 OK”,表示已准备好接收。

注:SMTP不使用中间的邮件服务器。

2、邮件传送

1)、邮件的传送从MAIL命令开始。MAIL命令后面有发件人的地址。如MAIL FROM: 。服务器给出响应回应;

2)、接下来便是一个或多个RCPT命令,取决于把同一个邮件发送给一个或多个收件人,其格式为RCPT TO:<收件人地址>

3)、再接下来就是DATA命令,表示要开始传送邮件的内容了。SMTP服务器返回的信息是:354 Start mail input;end with . ;这里是回车换行的意思。发送完毕后,再发送.表示邮件内容结束

3、连接释放

邮件发送完毕后,SMTP客户发送QUIT命令。SMTP服务器返回的信息是:221 服务关闭,表示SMTP同意释放TCP连接。邮件传送的全部过程即结束。


HTTP和SMTP比较:

同:

都被用来从一个主机向另一主机传递文件;http一般把一些文件(也成为对象)从一个web服务器传递到 web客户那里,例如你平时打开个网页。SMTP传递的是电子文件,从一个邮件服务器传递到另一 个邮件服务器,并且持续的HTTP和SMTP都是持续连接。

异:

1、HTTP 是一种拉协议tcp连接由想接收文件的机器发起的,所谓pull型协议是指:某人是把文件信息,从web server那里取出来,也就是客户主动去拿文件,因此是pull。而SMPT是一种推协议tcp连接由要发送该文件的机器发起的,是发送邮件的服务器向接收邮件的服务器主动发送信息。

具体理解图示:

简单邮件传输协议SMTP_第2张图片

2、 SMTP要求每个报文(包括它们的体)必须是7比特的ASII码。http数据不受这种限制。
3、HTTP把每个对象封装到自己的HTTP响应报文中,SMTP则把所有报文对象放在一个报文之中。


2. SMTP协议应用:使用Socket发送邮件
SMTP协议建立在TCP协议之上,所以原则上按照SMTP协议的规范,使用Socket跟SMTP服务器进行交互


你可能感兴趣的:(网络)