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:行是什么无关
命令 描述
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
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
下面是身份验证的部分
AUTH LOGIN‘客户端输入
334 VXNlcm5hbWU6‘服务端返回,明文为Username:
dXNlcm5hbWU=‘客户端输入,明文为username,即登陆用户名
334 UGFzc3dvcmQ6‘服务端返回,明文为Password:
bXlwYXNzd29yZA==‘客户端输入,明文为mypassword
235 Authentication successful‘服务端返回成功信息
334 VXNlcm5hbWU6‘服务端返回,明文为Username:
dXNlcm5hbWU=‘客户端输入,明文为username,即登陆用户名
334 UGFzc3dvcmQ6‘服务端返回,明文为Password:
bXlwYXNzd29yZA==‘客户端输入,明文为mypassword
235 Authentication successful‘服务端返回成功信息
其他部分应该没什么问题,身份验证部分使用了Base64编码,需要进行转换
但只要使用下面这段HTML代码就能轻松进行转化
源代码:
Type in the message you want to encode in base64, or paste
base64 encoded text into the text field, select Encode or Decode,
and click the button!
base64 encoded text into the text field, select Encode or Decode,
and click the button!
onClick="document.base64Form.theText.value=encode64(document.base64Form.theText.value);">
onClick="document.base64Form.theText.value=decode64(document.base64Form.theText.value);">
onClick="document.base64Form.theText.value=decode64(document.base64Form.theText.value);">