介绍smtp命令和ESMTP发送过程

介绍smtp命令和ESMTP过程

什么是 SMTP

SMTP (Simple Mail Transfer Protocol) : 电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。 SMTP 是请求/响应协议,命令和响应都是基于 ASCII 文本,并以 CR 和 LF 符结束。响应包括一个表示返回状态的三位数字代码。SMTP 在 TCP 协议 25 端口监听连接请求。

什么是 ESMTP

ESMTP (Extended SMTP),顾名思义,扩展 SMTP 就是对标准 SMTP 协议进行的扩展。它与 SMTP 服务的区别仅仅是,使用 SMTP 发信不需要验证用户帐户,而用 ESMTP 发信时, 服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与 SMTP 方式没有两样。

SMTP 命令

SMTP 命令包括:

HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。

EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。

MAIL FROM 命令中指定的地址是发件人地址

RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。

DATA 在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF 结束

VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令

EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用

HELP 查询服务器支持什么命令

NOOP 无操作,服务器应响应 OK

RSET 重置会话,当前传输被取消

QUIT 结束会话



===============================================================

 在XP下,通过163服务器 使用 SMTP 命令发送邮件到QQ,我测试过,反过来也成立
 以下是用163向qq发送邮件的过来, 

IP:220.181.12.14                                       //smtp.163.com解析后的IP
Port:25
begin connect ..... --------------------------------------- 正在连接服务器 25 端口
connected----------------------------------- 连接服务器 25 端口成功
220 163.com Anti-spam GT for Coremail System (163com[20081010])

HELO smtp.163.com ----------------------------------- 向服务器标识用户身份,发信不要认证,跳过下面几步直接发送 mail from 命令
250 OK------------------------------------------------ ESMTP 命令,发信需要认证。

AUTH LOGIN------------------------------------------------- 进行用户身份认证
334 dXNlcm5hbWU6

user:XXXXXXXX----------------------------------- BASE64 加密后的用户名
334 XXXXXXXXXXXX-------------------------------------- 用户名存在

passXXXXXXXXXXXXX=------------------------------------- BASE64 加密后的密码 (说明,网上有说,密码后面必须要有“=” 字符,否则会出错)
235 Authentication successful-------------------------------------- 身份认证成功

(535 auth failure ------------------------------------------ 身份认证失败)

MAIL FROM: <chhuic@163.com>------------------------------ mail from 地址 chhuic@163.com  (说明:必须包含<>,否则出现500语法错误 )
250 Mail OK----------------------------------------------------- 命令执行成功

RCPT TO: <418715961@qq.com>-------------------------------- 递送给地址 418715961@qq.com(说明:必须包含<>,否则出现500语法错误 )
250 Mail OK----------------------------------------------------- 命令执行成功

data------------------------------------------------------- 数据传输初始化
354 End data with <CR><LF>.<CR><LF>----------------------------------------------- 开始传输数据

From:chhuic@163.com
To:418715961@qq.com
Date:0001-1-1 0:00:00
Subject:Subject

body text
.
------------------------------------------------------------ 数据内容,包括BASE64加密后的邮件内容, 以 CRLF.CRLF 结束数据传输
250 Mail OK ----------------------- 命令执行成功



 

原文地址:https://www.cnblogs.com/chhuic/p/1579079.html