出于教育目的,我需要使用 SMTP 的基本且简单的规则通过 SMTP 服务器发送电子邮件。
我能够使用smtp4dev. I telnet localhost 25
和 命令是:
我想做同样的事情,使用 Gmail SMTP 服务器。但是,它需要身份验证和 TLS。我不知道如何为 Gmail 做到这一点。这是一个屏幕截图telnet smtp.gmail.com 587
:
我搜索并发现了很多链接,包括维基百科的文章 about STARTTLS
命令。但我无法使用 TLS 并使用命令行(或自己用编程语言发送命令)对 Gmail 的 SMTP 服务器进行身份验证。有人可以帮忙吗?
要通过 Gmail 发送,您需要使用加密连接。单独使用 telnet 是不可能的,但您可以使用类似的工具openssl
either使用 openssl 中的 starttls 选项进行连接,将普通连接转换为加密连接...
openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf -ign_eof
or直接连接到 ssl 套接字...
openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof
EHLO 本地主机
之后,使用 Base64 编码的用户名/密码向服务器进行身份验证
AUTH 平原 AG15ZW1haWxAZ21haWwuY29tAG15cGFzc3dvcmQ=
从命令行获取:
echo -ne '\[email protected]\00password' | base64
AHVzZXJAZ21haWwuY29tAHBhc3N3b3Jk
然后继续“邮件来自:”,就像您的示例一样
示例会话:
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: <[email protected]>
250 2.1.0 OK m46sm11546481eeh.9
rcpt to: <[email protected]>
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)