CMD下利用命令行发送SMTP协议邮件

  • 首先需要用到Telnet服务
    • 什么是Telnet:Telnet是teletype network的缩写,是Internet上远程登录的一种程序,一种典型的客户机/服务器模型的服务。Telnet提供远程登录功能,使得用户在本地主机上运行Telnet客户端,就可登录到远端的Telnet服务器。在本地输入的命令可以在服务器上运行,服务器把结果返回到本地,如同直接在服务器控制台上操作。这样就可以在本地远程操作和控制服务器。
    • Telnet协议:Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。
    • 开启Telnet:控制面板一程序一打开或关闭windows功能一勾选“telnet服务器”和“telnet客户端”确定并安装即可。
  • 在CMD中,查看Telnet是否生效
    • 在CMD中输入Telnet,预期返回如图证明Telnet服务可以正常使用
  • 邮箱开启POP3/SMTP和IMAP/SMTP服务,并记录对应密码。(登录邮箱网页版,在设置中开启)
  • 以163邮箱为例,用CMD命令发送SMTP邮件
    • 打开CMD,连接邮件服务器,CMD下输入:telnet smtp.163.com 25后回车,25为端口号,预期返回:220 163.com Anti-spam GT for Coremail System (163com[20141201])
    • 向服务器表明身份,继续输入:helo 163.com,预期返回:250 OK
    • 登录认证,需要邮件服务器认证后才能进行邮件发送操作,继续输入:auth login后回车,预期返回:334 dXNlcm5hbWU6
    • 输入邮箱名的base64编码后的字符串,如邮箱名为[email protected],testtesttest编码后的字符串为dGVzdHRlc3R0ZXN0,所以继续输入:dGVzdHRlc3R0ZXN0后回车,预期返回:334 UGFzc3dvcmQ6
    • 输入邮箱密码的base64编码后的字符串,所以继续输入:MTExMTEx后回车,预期返回:235 Authentication successful
    • 在线base64编码转换器:http://www1.tc711.com/tool/BASE64.htm
    • 编写邮件
      • 继续输入发件人邮箱:mail from:<[email protected]>后回车,预期返回:250 Mail OK
      • 继续输入收件人邮箱:rcpt to:<[email protected]>后回车,预期返回:250 Mail OK,可以有多个rcpt to
      • 继续输入:data后回车,预期返回:354 End data with <CR><LF>.<CR><LF>,表示可以进行邮件正文输入
      • 正文
        • 继续输入:from:[email protected](发送者邮箱,可以不写)
        • 继续输入:to: [email protected](接收者邮箱,可以不写)
        • subject:hello
        • 这里必须空一行,下行开始表示邮件正文内容
        • Email test!
        • .(这里是单独占一行的一个小数点,表示邮件编辑结束)
        • .输入完毕后回车,预期返回:250 Mail OK queued as smtp1,C8mowABXnysFduNXz+qjFQ--.23833S2 1474524750
  • 这样收件人客户端就会收到发件人发出的邮件了
  • SMTP返回码含义
    • 220 服务就绪 221 服务关闭传输信道 421 服务未就绪,关闭传输信道
    • 235 用户验证成功 535 用户验证失败
    • 250 要求的邮件操作完成
    • 334 等待用户输入验证信息
    • 354 开始邮件输入,以.结束
    • 503 错误的命令序列
    • 550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)
  • 参考文档:smtp的底层协议发送邮件-吴老-光荣之路

猜你喜欢

转载自blog.csdn.net/chang_jinling/article/details/81098666
今日推荐