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

标签 email smtp gmail smtpclient smtp-auth

出于教育目的,我需要使用 SMTP 的基本且简单的规则通过 SMTP 服务器发送电子邮件。

我可以使用 smtp4dev 来做到这一点。我 telnet localhost 25 和命令是:

enter image description here

我想使用 Gmail SMTP 服务器做同样的事情。但是,它需要身份验证和 TLS。我不知道如何为 Gmail 做到这一点。以下是 telnet smtp.gmail.com 587 的屏幕截图:

enter image description here

我搜索并发现了很多链接,包括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/

相关文章:

html - 取消订阅标签是如何工作的?

email - 我们应该使用 SPF (TXT) 和 SPF(99 型)还是只使用其中一种?

smtp - 使用 telnet 发送邮件,地址为 '@' 为空

perl - Net::SMTP - 停止工作,但我不确定为什么 [IO::Socket::SSL ?]

c# - Android gmail gif 闪烁

email - 自动Shopify分析电子邮件

php - 如何使用 PHP mysql 通过 cron 作业发送电子邮件

java - 在 java 中发送电子邮件时,.zip 文件被转换为 .bin 文件

JavaMail 无法发送电子邮件

android - 寻找 OAuth 2.0 访问 gmail 的工作(完整项目)示例