备注
Telnet:Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法
SMTP:是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。端口号:25。
实现
获取qq邮箱授权码
要使用telnet远程登录qq邮箱服务器,需要先在qq邮箱中开启SMTP服务,并获得授权码。
关于授权码具体信息和获取方式参考:关于授权码
登录SMTP服务器发送邮件
连接
使用管理员身份运行cmd,输入telnet smtp.qq.com 25
,成功时服务器回应响应状态码220
握手
输入Helo qq.com
,成功时服务器回应响应状态码250 OK
登录
输入auth login
,成功时服务器回复响应状态码334 ,短语VXN1cm5hbWU6。
短语VXN1cm5hbWU6是" Username:"的base64编码。
这时需要输入qq邮箱账户名,输入形式为base64编码。
base64在线转码网址:base64在线转码
将自己的qq邮箱账户名转换为base64形式后输入命令行,回车。成功时服务器回答334 UGFzc3dvcmQ6。 “UGFzc3dvcmQ6”是“Password:”的base64形式。
此时输入在第一步中获得的授权码的base64形式。输入正确则服务器回答响应状态码235 Authentication Succsessful。到此就已经成功使用telnet登录了QQ邮箱的smtp服务器。
邮件传输
按照标准文本邮件报文格式(RFC:882),在cmd中输入邮件内容:
C: MAIL FROM: <username1@qq.com> //初始化邮件传输 来自<username1@qq.com>
S: 250 username1@qq.com... Sender ok // 发信人确定
C: RCPT TO: <username2@qq.com> //标识邮件接收人<username2@qq.com>
S: 250 username2@qq.com ... Recipient ok //收件人确定
C: DATA // 在单个或多个RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以. 结束
S: 354 Enter mail, end with "." on a line by itself // 354 开始邮件输入,以一个只有“.”的行结束
C: 邮件内容行...
C: 邮件内容行...
C: .
S: 250 Message accepted for delivery //邮件接受发送
至此,邮件内容传输完成。
结束
输入quit
以结束tcp连接,成功则服务器回答状态码221,并断开连接,回到cmd待命令输入。
结语
在发送邮件的过程中,发现登录QQ邮箱的smtp服务器,只能给同为QQ邮箱的邮箱地址发送文件,在输入163邮箱地址时服务器回应了502 invalid input。并且在发送邮件时不可伪造发送地址。
163邮箱的登录和发送邮件有稍许不同,不可完全套用上面的命令。