SMTP基本命令集: 命令 描述 HELO 向服务器标识用户身份,发送者能欺骗,说谎,但一般情况下服务器都能检测到 MAIL 初始化邮件传输 mail from: RCPT 标识单个的邮件接收人;常在MAIL命令后面,可有多个rcpt to: DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束 VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令 EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用BR> HELP 查询服务器支持什么命令 NOOP 无操作,服务器应响应OK QUIT 结束会话 RSET 重置会话,当前传输被取消 MAIL FROM命令中指定的地址是称作envelope from地址,不需要和发送者自己的地址是一致的 RCPT TO 与之等同,指明的接收者地址称为envelope to地址,而与实际的to:行是什么无关
现在的SMTP服务器一般都需要身份验证,下面是一个telnet发送邮件的例子:
telnet smtp.sina.com.cn 25 220 smtp.sina.com.cn ESMTP SINAMAIL (Postfix Rules!) EHLO sina.com.cn 250-smtp.sina.com.cn 250-PIPELINING 250-SIZE 19660800 250-VRFY 250-ETRN 250-AUTH LOGIN 250-AUTH=LOGIN 250 8BITMIME AUTH LOGIN 334 VXNlcm5hbWU6 dXNlcm5hbWU= 334 UGFzc3dvcmQ6 bXlwYXNzd29yZA== 235 Authentication successful MAIL FROM: 250 Ok RCPT TO: 250 Ok DATA 502 Error: command not implemented Data 354 End data with . hello,this is a test. . 250 Ok: queued as CB9AE175F6 Quit 221 Bye