使用 TELNET 发送 SMTP 邮件详解

30 篇文章 1 订阅
5 篇文章 0 订阅

前言

本文将简要阐述使用 telnet 以及 smtp.qq.com 如何发送一个邮件,在本文中我们假设读者:

  1. 拥有至少一个 QQ 号;
  2. 可以使用浏览器访问 mail.qq.com
  3. 电脑上安装了远程登录程序 TELNET

第一步:进入 QQ 邮箱,开通 SMTP 服务

使用你的 QQ 号登录 mail.qq.com。点击“设置” → \rightarrow “账户” → \rightarrow “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”,选择“开启 POP3/SMTP 服务”。开启后,QQ 邮箱会给出一个 “邮箱授权码”,一般是一串随机的小写字母,这个授权码将在接下来的步骤中被使用。

第二步:使用 TELNET 登录 smtp.qq.com

$ telnet smtp.qq.com 587

连接成功后,需要进行基本的身份认证,依次输入以下四行内容:

  1. 输入 EHLO smtp.qq.com
  2. 输入 AUTH LOGIN 表明你正要登录;
  3. 输入你的 QQ 号的 base64 编码;
  4. 输入你的 “邮箱授权码” 的 base64 编码;

登录成功后,屏幕上会显示诸如 235 Authentication successful 的一行内容。

第三步:给出发件人和收件人

在确保登录成功的前提下,输入以下两行内容:

MAIL FROM: <你的邮箱>
RCPT TO: <收件人的邮箱>

这一步需要注意:

  1. 你的邮箱与收件人邮箱两侧的尖括号不能省略
  2. 你的邮箱必须与你登录时使用的 QQ 号相关联;例如,如果我的 QQ 号是 123456,那么我可以将 123456@qq.com 作为我的发件人邮箱,如果我同时将 test@qq.com 关联到了 QQ123456,那么我也可以使用 test@qq.com 作为我的发件人邮箱;

收件人邮箱只要是一个合法且存在的邮箱即可,没有过多讲究。

第四步:输入信件头部与内容

在指定了发件人和收件人后,你需要输入一个 DATA 命令,该命令独占一行内容。

DATA
From: 你的邮箱
To: 收件人邮箱
Subject: 邮件主题
邮件内容
.

尽管在第三步中,我们已经指定了发件人和收件人,此处不写 From:To: 有时邮件也能正常被投递。但是由于很多邮件系统有反垃圾系统,因此,正确地填写邮件头部的 From,ToSubject 往往明智的选择。邮件内容中可以有多行内容,但邮件内容的最后一行必须以单独的一个英文句号作为结束,因此请不要在邮件内容的其他部分中安插独占一行的英文句号。

内容输入结束后,如果邮件正常发送,屏幕上将显示一行诸如 250 OK: queued as. 的内容。此后输入 QUIT 命令即可退出 TELNET

交互过程示例

下面给出了一次 TELNET 发送邮件的完整交互过程的示例:

$ telnet smtp.qq.com 587
Trying 14.18.175.202...
Connected to smtp.qq.com.
Escape character is '^]'.
220 newxmesmtplogicsvrszb6-0.qq.com XMail Esmtp QQ Mail Server.
EHLO smtp.qq.com
250-newxmesmtplogicsvrszb6-0.qq.com
250-PIPELINING
250-SIZE 73400320
250-STARTTLS
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
AUTH LOGIN
334 VXNlcm5hbWU6
************
334 UGFzc3dvcmQ6
************************
235 Authentication successful
MAIL FROM: <premierbob@qq.com>
250 OK
RCPT TO: <guogn2120@mails.jlu.edu.cn>
250 OK
DATA
354 End data with <CR><LF>.<CR><LF>.
From: premierbob@qq.com
To: guogn2120@mails.jlu.edu.cn
Subject: test-smtp
hello world!
from telnet.
.
250 OK: queued as.
QUIT
221 Bye.
Connection closed by foreign host.
$

上述星号位置为 QQ 号与邮箱授权码。

关于中文乱码问题

如果你在邮件内容中使用中文,你很可能会面临着收件时看到乱码的问题。早期的 SMTP 协议要求使用者只能发送标准的 7-bit ASCII 码字符。当我们想要在首部使用非 ASCII 码字符时,我们可以使用 quoted-printablebase64 两种技术。当我们想要在邮件内容中使用非 ASCII 码字符时,可以参考 RFC-1511 中对 MIME(Multiple Internet Mail Extensions) 的规定。在此我们结合 base64MIME 给出一种可行的解决方案:

DATA
From: 你的邮箱
To: 目标邮箱
Subject: =?UTF-8?B?57yW56CB5ZCO55qE5Li76aKY?=
MIME-Version:1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
邮件内容
.

上文中 57yW56CB5ZCO55qE5Li76aKY 处需要填入原主题的 base64 编码,但你需要确定,被编码的字符串在编码前确实采用了是UTF-8 编码,而不是 GB2312 等其他中文编码。如果你不熟悉如何使用程序获得字符串的 base64 编码,你可以使用网站 https://www.base64encode.org 或其他编码工具。调整 Content-type 一行中的 charset=utf-8 即可适应邮件内容中的不同字符编码。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值