SMTP 命令简介
什么是 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 结束会话
使用 SMTP 命令发送邮件
例如:邮件服务器IP是192.168.0.1 (蓝色字体内容由客户端输入,红色字体内容是服务返回的)
telnet 192.168.0.1 25 --------------------------------------- 使用 telnet 命令连接服务器 25 端口
Trying 192.168.0.1... --------------------------------------- 正在连接服务器 25 端口
Connected to 192.168.0.1. ----------------------------------- 连接服务器 25 端口成功
220 Winmail Mail Server ESMTP ready ------------------------- 显示服务器的标识名称 (Winmail 管理工具->高级设置->系统参数->基本参数中可更改)
helo cnu.com ------------------------------------------------ 向服务器标识用户身份,发信不要认证,跳过下面几步直接发送 mail from 命令
250 Winmail Mail Server
ehlo cnu.com ------------------------------------------------ ESMTP 命令,发信需要认证。
250-Winmail Mail Server
250-PIPELINING
250-AUTH=LOGIN PLAIN
250-AUTH LOGIN PLAIN
250-SIZE 20480000
250 8BITMIME
auth login ------------------------------------------------- 进行用户身份认证
334 VXNlcm5hbWU6
Y29zdGFAYW1heGl0Lm5ldA== ----------------------------------- BASE64 加密后的用户名
334 UGFzc3dvcmQ6
MTk4MjIxNA== ----------------------------------------------- BASE64 加密后的密码
235 auth successfully -------------------------------------- 身份认证成功
(535 auth failure ------------------------------------------ 身份认证失败)
发到本系统中域名下的账户可跳过身份认证。
mail from: <test1@domain.com> ------------------------------ mail from 地址 test1@domain.com
250 ok ----------------------------------------------------- 命令执行成功
rcpt to: <test2@domain.com> -------------------------------- 递送给地址 test2@domain.com
250 ok ----------------------------------------------------- 命令执行成功
data ------------------------------------------------------- 数据传输初始化
354 go ahead ----------------------------------------------- 开始传输数据
From: test1@domain.com
To: test2@domain.com
Date: Mon, 25 Oct 2004 14:24:27 +0800
Subject: test mail
Hi, test2
This is a test mail, you don't reply it.
.
------------------------------------------------------------ 数据内容,包括BASE64加密后的邮件内容, 以 CRLF.CRLF 结束数据传输
250 ok message accepted for delivery ----------------------- 命令执行成功
quit ------------------------------------------------------- 结束会话
221 Winmail Mail Server
Connection closed by foreign host .------------------------- 断开连接
分享到:
相关推荐
该文档详细介绍了一些常用的SMTP命令,并附有实际操作的演示图,希望对大家有所帮助,谢谢
telnet命令测试SMTP服务器
描述pop3和smtp的通信命令及各种响应码含义以及MIME的数据格式。
SMTP协议原始命令码和工作原理
SMTP 命令包括: HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。 EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。 MAIL FROM 命令中指定的地址是...
ava调用SMTP命令发邮件,实现抄送,密送,附件等。 无需邮件搭建邮件服务器直接发送,改版加入了多线程,同时邮件日志采用文件和数据库同时记录,并写了定时器对于发送失败的邮件进行统计和重发(三次)
这是一个console的应用程序,用于服务器上自动发送邮件。
SMTP服务命令.doc,特别适合学习写服务器的初学者,命令很详细,很利于协议的解析。
基于SMTP 的邮件截获与还原技术研究.pdf IMAP命令学习.doc pop3 smtp 指令.txt RFC3501中英文
Java调用SMTP命令发邮件,实现抄送,附件--无需邮件搭建邮件服务器直接发送 该功能采用了Gearmand进行任务转发
C#实现SMTP服务器,使用TCP命令实现,功能比较完善
它支持安全连接 使用SSL或TLS的后开始建立连接,连接超时,验证使用PHP SASL级(普通,登录,强加的MD5验证) ,提供的POP3面前的SMTP认证,并充分利用了扩展的SMTP流水线缓冲区SMTP命令,提供更快排队的邮件时,...
Java调用SMTP命令发邮件,实现抄送,密送,附件等。 无需邮件搭建邮件服务器直接发送,改版加入了多线程,同时邮件日志采用文件和数据库同时记录,并写了定时器对于发送失败的邮件进行统计和重发(还在完善这个功能,该...
10172911梁天一用Telnet命令收发邮件(SMTP和POP3协议)实验报告.docx
1. 首先申请一个 163 邮箱,进入主界面后,点击页面上方的“设置”进入设置页面 2. 进入邮箱中心——客户端授权密码,选择开启,并记住授权码,该授权码后面为
linux环境下,c语言的smtp代码,smtp协议的命令进行了更好地解析。
本程序编译环境是:Visual Studio 2012;系统环境是:Windows 8...响应客户SMTP命令,将命令的交互过程和收到的邮件显示到屏幕上 支持单用户 不保存和转发收到的邮件 不作错误处理 要求能显示客户端发送的图片。
用Telnet命令收发邮件(SMTP和POP3协议)实验报告.docx
SMTP协议原始命令码和工作原理 1.SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器; 2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束...