如何通过Gmail使用简单的SMTP命令发送电子邮件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我需要使用SMTP的基本规则和简单规则通过SMTP服务器发送电子邮件。

我能用smtp4dev做到这个。截图:

我想用Gmail SMTP服务器做同样的事情。但是,它需要认证和TLS。我无法弄清楚如何为Gmail做到这一点。以下是截图telnet smtp.gmail.com 587

如何通过Gmail使用简单的SMTP命令发送电子邮件?

提问于
用户回答回答于

通过gmail发送,你需要使用加密连接。单独使用telnet是不可能的,但你可以使用openssl之类的工具

或者使用openssl中的starttls选项连接,将普通连接转换为加密的。

openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf -ign_eof

或者直接连接到一个ssl sockect ...

openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof

EHLO本地主机

之后,使用base64编码的用户名/密码向服务器进行身份验证

AUTH PLAIN AG15ZW1haWxAZ21haWwuY29tAG15cGFzc3dvcmQ =

从命令行得到这个:

perl -MMIME::Base64 -e 'print encode_base64("\000myemail\@gmail.com\000mypassword")' 
AG15ZW1haWxAZ21haWwuY29tAG15cGFzc3dvcmQ=

示例会话:

openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof
[... lots of openssl output ...]
220 mx.google.com ESMTP m46sm11546481eeh.9
EHLO localhost
250-mx.google.com at your service, [1.2.3.4]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250 ENHANCEDSTATUSCODES
AUTH PLAIN AG5pY2UudHJ5QGdtYWlsLmNvbQBub2l0c25vdG15cGFzc3dvcmQ=
235 2.7.0 Accepted
MAIL FROM: <gryphius-demo@gmail.com>
250 2.1.0 OK m46sm11546481eeh.9
rcpt to: <somepoorguy@example.com>
250 2.1.5 OK m46sm11546481eeh.9
DATA
354  Go ahead m46sm11546481eeh.9
Subject: it works

yay!
.
250 2.0.0 OK 1339757532 m46sm11546481eeh.9
quit
221 2.0.0 closing connection m46sm11546481eeh.9
read:errno=0
用户回答回答于

这是我的步骤:

  1. 在Windows窗口上安装telnet客户端。
  2. 下载stunnel。(我下载并安装了一个名为stunnel-4.56-installer.exe的文件)。
  3. 一旦安装,你需要找到stunnel.conf配置文件,在我的情况下,我安装了C:\Program Files (x86)\stunnel
  4. 你需要在文本查看器(如记事本)中打开此文件。[gmail-smtp]在下面的客户端行上查找并删除分号(在stunnel.conf文件中,以分号开头的每行都是注释)。你应该最终得到类似于: [gmail-smtp] client = yes accept = 127.0.0.1:25 connect = smtp.gmail.com:465 完成后,保存stunnel.conf文件并重新加载配置(使用stunnel GUI程序执行此操作,然后单击配置=>重新加载)。

现在你应该准备好在Windows Telnet客户端发送电子邮件了! 转到开始=>运行=> cmd

打开cmd后,键入以下内容并按Enter键:

telnet localhost 25

你应该看到类似于以下内容的内容:

220 mx.google.com ESMTP f14sm1400408wbe.2

然后,你需要输入以下内容并按回车键进行回复:

helo google

这应该给你以下回应:

250 mx.google.com at your service

如果你得到这个,你需要输入以下内容并按回车:

ehlo google

这应该会给你以下回应:

250-mx.google.com at your service, [212.28.228.49]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250 ENHANCEDSTATUSCODES

现在你应该准备好使用Gmail的详细信息进行身份验证。要做到这一点,请输入以下内容并按Enter键:

AUTH LOGIN

这应该会给你以下回应:

334 VXNlcm5hbWU6

这意味着我们准备通过使用我们的Gmail地址和密码进行身份验证。

然而,由于这是一个加密会话,我们将不得不发送以base64编码的电子邮件和密码。要编码你的电子邮件和密码,你可以使用转换器程序或在线网站对其进行编码。

完成此复制后,将转换后的base64用户名粘贴到cmd / telnet会话中,然后按Enter键。这应该给你以下回应:

334 UGFzc3dvcmQ6

现在将你转换后的base64密码复制并粘贴到cmd / telnet会话中,然后按Enter键。如果两个登录凭证都正确,这应该会给你以下响应:

235 2.7.0 Accepted

你现在应该使用以下格式输入发件人电子邮件(应与用户名相同)并按Enter键:

MAIL FROM:<test@gmail.com>

这应该给你以下回应:

250 2.1.0 OK x23sm1104292weq.10

你现在可以使用类似的格式输入收件人电子邮件地址,然后按Enter键:

RCPT TO:<recipient@gmail.com>

这应该给你以下回应:

250 2.1.5 OK x23sm1104292weq.10

现在你需要键入以下内容并按Enter键:

DATA

给你以下回应:

354  Go ahead x23sm1104292weq.10

为此,请按照以下格式输入消息:

From: Test <test@gmail.com>
To: Me <recipient@gmail.com>
Subject: Testing email from telnet
This is the body

Adding more lines to the body message.

当你完成电子邮件输入一个点:

.

这应该给你以下回应:

250 2.0.0 OK 1288307376 x23sm1104292weq.10

现在,你需要输入以下内容并按下回车键结束会话:

QUIT

这应该给你以下回应:

221 2.0.0 closing connection x23sm1104292weq.10
Connection to host lost.

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券