出于教育目的,我需要使用 SMTP 的基本且简单的规则通过 SMTP 服务器发送电子邮件。
我可以使用 smtp4dev 来做到这一点。我 telnet localhost 25
和命令是:
我想使用 Gmail SMTP 服务器做同样的事情。但是,它需要身份验证和 TLS。我不知道如何为 Gmail 做到这一点。以下是 telnet smtp.gmail.com 587
的屏幕截图:
我搜索并发现了很多链接,包括Wikipedia's article关于 STARTTLS 命令。但我无法使用 TLS 并使用命令行(或自己用编程语言发送命令)对 Gmail 的 SMTP 服务器进行身份验证。有人可以帮忙吗?
最佳答案
要通过 Gmail 发送,您需要使用加密连接。单独使用 telnet 是不可能的,但您可以使用 openssl 等工具
或者使用 openssl 中的 starttls 选项进行连接,将普通连接转换为加密连接...
openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf -ign_eof
或直接连接到 ssl 套接字...
openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof
EHLO 本地主机
之后,使用base64编码的用户名/密码向服务器进行身份验证
AUTH PLAIN AG15ZW1haWxAZ21haWwuY29tAG15cGFzc3dvcmQ=
从命令行获取它:
echo -ne '\00user@gmail.com\00password' | base64
AHVzZXJAZ21haWwuY29tAHBhc3N3b3Jk
然后继续“邮件来自:”,就像您的示例中一样
示例 session :
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
关于email - 如何通过 Gmail 使用简单的 SMTP 命令发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11046135/