支持 GMail TLS/STARTTLS 与 SSL 的 Curl SMTP 命令行参数是啥

Posted

技术标签:

【中文标题】支持 GMail TLS/STARTTLS 与 SSL 的 Curl SMTP 命令行参数是啥【英文标题】:What are the Curl SMTP command line arguments to support GMail TLS/STARTTLS vs SSL支持 GMail TLS/STARTTLS 与 SSL 的 Curl SMTP 命令行参数是什么 【发布时间】:2012-05-18 09:14:18 【问题描述】:

我在应用程序中使用 Curl.exe 发送电子邮件。我需要支持大多数主要的电子邮件服务器。 GMail 公开了以下端口和身份验证方法。

TLS/STARTTLS(有时称为显式 TLS):使用端口 587 SSL(有时称为隐式 TLS):使用端口 465

我已使用以下命令行使显式 TLS 工作:

C:\>curl smtp://smtp.gmail.com:587 -v --mail-from "my.mail@gmail.com" --mail-rcpt 
"your.mail@x.com" --ssl -u my.mail@gmail.com:password -T "c:\test.txt" -k --anyauth

我尝试了以下方法来让 ImplicitTLS 工作,但事实并非如此。

C:\>curl smtp://smtp.gmail.com:465 -v --mail-from "my.mail@gmail.com" --mail-rcpt 
"your.mail@x.com" --ssl -u my.mail@gmail.com:password -T "c:\test.txt" -k --anyauth

让 SSL/隐式 TLS 工作的正确命令行参数是什么?

【问题讨论】:

你已经交换了显式/隐式:当你说 START SSL/TLS 时,你明确告诉它开始。请注意,两者通常都可以使用 SSL 或 TLS。 (我为此写了long answer on SF。) 感谢您的提醒。我交换了显式和隐式描述。 你试过用smtps://...吗? 【参考方案1】:

smtps:// 用于 SMTPS(即现有 SSL/TLS 连接之上的 SMTP)。

这行得通:

curl smtps://smtp.gmail.com:465 -v

我还将使用--ssl-reqd 进行显式 STARTTLS 连接,以确保在您期望的情况下使用 SSL/TLS(否则可能会进行降级攻击)。

也不要使用-k,检查服务器证书:见http://curl.haxx.se/docs/sslcerts.html

【讨论】:

【参考方案2】:

我刚刚尝试了以下方法,效果很好:

curl smtps://smtp.gmail.com:465 -v --mail-from "xxx@gmail.com" --mail-rcpt "yyy@gmail.com" --ssl -u xxx@gmail.com:password -T "test.txt" -k --anyauth

希望对你有帮助!

【讨论】:

【参考方案3】:

你可以试试这个..

curl --url "smtps://smtp.gmail.com:465" --ssl-reqd --mail-from "sender@gmail.com" --mail-rcpt "recepient@gmail.com" --upload-file /var/scripts/mail.txt --user "sender@gmail.com:senderGmailPassword"

【讨论】:

以上是关于支持 GMail TLS/STARTTLS 与 SSL 的 Curl SMTP 命令行参数是啥的主要内容,如果未能解决你的问题,请参考以下文章

gmail邮件服务器无法发送邮件

Gmail API 是不是支持使用 OAuth 服务帐户?

与用于日期查询的 Gmail Web UI 相比,Gmail API 未返回正确的电子邮件

Gmail现在支持安排电子邮件,如何使用gmail rest api工作,还是api支持此功能?

Gmail API 批量获得支持?

尽快收到新邮件