在 Windows 下可以使用 telnet 测试 SMTP 协议, 本文记录相关内容。
telnet 简介
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
开启 Telnet 服务
- 进入控制面板 -> 应用 -> 启动或关闭 Windows 功能
- 开启 Telnet 客户端
- 确定即可
telnet 测试
- Windows下,在telnet 工具中可以测试 smtp
- 这里以QQ邮箱为例
连接邮件服务器
- 打开cmd,输入:telnet smtp.qq.com 25 ,连接邮件服务器,成功后返回如下信息
telnet smtp.qq.com 25
220 smtp.qq.com Esmtp QQ Mail Server
向服务器表明身份
输入helo qq.com
,向服务器表明身份,成功后返回如下信息
helo qq.com
250 smtp.qq.com
登陆验证
发送邮件前,需要先登陆,通过邮件服务器认证后才可以发送邮件
在线base64编码转换器:http://base64.xpcha.com/
- 操作步骤:
- cmd中输入
auth login
,返回如下信息
auth login
334 UXN1cm5hbWU6
- 输入邮箱的base64编码 将邮箱账号转换为 base64 的编码填入,返回如下信息
334 UGFzc3dvcmQ6
- 输入开启 IMAP/SMPT 时授权码的base64编码,成功后返回如下信息
235 Authentication successful
发送邮件
smtp常用命令
命令 | 含义 |
---|---|
helo/ehlo | 向服务器标识用户身份 |
初始化邮件传输 | |
mail from | 发件人,格式mail from:xxxxx@126.com |
rcpt to | 收件人,格式rcpt to:yyyyyy@126.com |
data | 在单个或多个rcpt 命令后,表示所有的邮件接收人已标识,并初始化传输,以. 结束 |
VRFY | 用于验证指定的用户/ 邮箱是否存在;由于安全方面的原因,服务器常禁止此命令 |
EXPN | 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用 |
HELP | 查询服务器支持什么命令 |
NOOP | 无操作,服务器应响应OK |
QUIT | 结束会话 |
RSET | 重置会话,当前传输被取消 |
smtp 返回码
返回码 | 格式含义 |
---|---|
500 | 格式错误,命令不可识别(此错误也包括命令行过长) |
501 | 参数格式错误 |
502 | 命令不可实现 |
503 | 错误的命令序列 |
504 | 命令参数不可实现 |
211 | 系统状态或系统帮助响应 |
214 | 帮助信息 |
220 | 服务就绪 |
221 | 服务关闭传输信道 |
421 | 服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应) |
250 | 要求的邮件操作完成 |
251 | 用户非本地,将转发向 |
450 | 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙) |
550 | 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问) |
451 | 放弃要求的操作;处理过程中出错 |
551 | 用户非本地,请尝试 |
452 | 系统存储不足,要求的操作未执行 |
552 | 过量的存储分配,要求的操作未执行 |
553 | 邮箱名不可用,要求的操作未执行(例如邮箱格式错误) |
354 | 开始邮件输入,以. 结束 |
554 | 操作失败 |
535 | 用户验证失败 |
235 | 用户验证成功 |
334 | 等待用户输入验证信息 for next connection |
参考资料
- https://blog.csdn.net/weixin_41270708/article/details/81073741
- https://baike.baidu.com/item/Telnet/810597?fr=aladdin