2024年4月21日发(作者:)

电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就

必须遵循一定的规则,这些规则就是邮件传输协议。SMTP协议定了邮件客户端与SMTP

服务之间,以及两台SMTP服务器之间发送邮件的通信规则;POP3/IMAP协议定义了邮件

客户端与POP3服务器之间收发邮件的通信规则。

一、SMTP协议

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)定义了邮件客户端

与SMTP服务器之间,以及两台SMTP服务器之间发送邮件的通信规则 。SMTP协议属于

TCP/IP协议族,通信双方采用一问一答的命令/响应形式进行对话,且定了对话的规则

和所有命令/响应的语法格式。

SMTP协议中一共定了18条命令,发送一封电子邮件的过程通常只需要其中的6条

命令即可完成发送邮件的功能,下表按照发送命令的先后顺序列出了这6条命令,并描

述了其语法及功能说明,其中,代表空格,代表回车和换行。

SMTP命令格式 说明

ehlo命令是SMTP邮件发送程序与SMTP

邮件接收程序建立连接后必须发送的第一条

ehlo

SMTP命令,参数表示SMTP邮件发送者

的主机名。

ehlo命令用于替代传统SMTP协议中的helo命

令。

如果SMTP邮件接收程序需要SMTP邮件发

送程序进行认证时,它会向SMTP邮件发送程序

auth

提示它所采用的认证方式,SMTP邮件发送程序接

着应该使用这个命令回应SMTP邮件接收程序,

参数表示回应的认证方式,通常是SMTP

邮件接收程序先前提示的认证方式。

此命令用于指定邮件发送者的邮箱地址,参

mailFrom:

表示发件人的邮箱地址

此命令用于指定邮件接收者的邮箱地址,

rcptTo:

参数表示接收者的邮箱地址。如

果邮件要发送给多个接收者,那么应使用多条

rcptTo命令来分别指定每一个接收者的邮

箱地址。

此命令用于表示SMTP邮件发送程序准备开

始输入邮件内容,在这个命令后面发送的所有数

data 据都将被当做邮件内容,直至遇到

."标志符,则表示邮件内容结

束。

此命令表示要结束邮件发送过程,SMTP邮件

quit 接收程序接收到此命令后,将关闭与SMTP邮件

发送程序的网络连接。

其它SMTP命令的语法及功能描述可以参考RFC821和RFC1869文档。

对于SMTP邮件发送程序发送的每一条命令,SMTP邮件接收程序都将回应一条响应

信息。每条响应信息都以一个响应状态开头,如:250 OK。响应状态用于表示SMTP服

务器对请求命令的处理结果和状态,它是一个三位的十进制数。响应状态码的最高位数

字代表了不同的分类,当其为 2 时表示命令执行成功;为5时表示命令执行失败;为3

时表示命令没有完成。关于响应状态码所代表的具体含义,可以参考RFC821文档。

SMTP协议是一个基于TCP/IP的应用层协议,SMTP服务器默认的网络监听端口号为

25,下面将通过telnet程序,手工发送SMTP命令来发送一封电子邮件,从而理解SMTP

协议的交互过程。

模拟环境说明:连接sina的SMTP服务器,给163的SMTP服务器发送一封邮件,操作

过程如下图所示: