如何通过 Gmail 使用简单的 SMTP 命令发送电子邮件? [英] How to send email using simple SMTP commands via Gmail?
问题描述
出于教育目的,我需要使用 SMTP 的基本和简单规则通过 SMTP 服务器发送电子邮件.
我能够使用 关于 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 ' 0user@gmail.com 0password' |base64AHVzZXJAZ21haWwuY29tAHBhc3N3b3Jk
然后继续邮件来自:"就像在你的例子中
示例会话:
openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof[...大量的openssl输出...]220 mx.google.com ESMTP m46sm11546481eeh.9EHLO 本地主机250-mx.google.com 为您服务,[1.2.3.4]250 码 35882577250-8BITMIME250-AUTH 登录 PLAIN XOAUTH250 增强状态代码AUTH PLAIN AG5pY2UudHJ5QGdtYWlsLmNvbQBub2l0c25vdG15cGFzc3dvcmQ=235 2.7.0 接受发件人:<gryphius-demo@gmail.com>250 2.1.0 OK m46sm11546481eeh.9转至:<somepoorguy@example.com>250 2.1.5 OK m46sm11546481eeh.9数据354 继续 m46sm11546481eeh.9主题:它有效耶!.250 2.0.0 OK 1339757532 m46sm11546481eeh.9退出221 2.0.0 关闭连接 m46sm11546481eeh.9读:错误= 0
For educational purposes, I need to send an email through an SMTP server, using SMTP's fundamental and simple rules.
I was able to do that using smtp4dev. I telnet localhost 25
and and commands are:
I want to do the same thing, using Gmail SMTP server. However, it requires authentication and TLS. I can't figure out how to do that for Gmail. Here's a screenshot of telnet smtp.gmail.com 587
:
I searched and found many links including Wikipedia's article about STARTTLS
command. But I'm not able to use TLS and authenticate to Gmail's SMTP server using command line (or sending commands myself in programming languages). Can anyone help?
to send over gmail, you need to use an encrypted connection. this is not possible with telnet alone, but you can use tools like openssl
either connect using the starttls option in openssl to convert the plain connection to encrypted...
openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf -ign_eof
or connect to a ssl sockect directly...
openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof
EHLO localhost
after that, authenticate to the server using the base64 encoded username/password
AUTH PLAIN AG15ZW1haWxAZ21haWwuY29tAG15cGFzc3dvcmQ=
to get this from the commandline:
echo -ne ' 0user@gmail.com 0password' | base64
AHVzZXJAZ21haWwuY29tAHBhc3N3b3Jk
then continue with "mail from:" like in your example
example 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
这篇关于如何通过 Gmail 使用简单的 SMTP 命令发送电子邮件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!