14

我在应用程序中使用 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 工作的正确命令行参数是什么?

4

3 回答 3

16

用于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

于 2012-05-09T20:22:05.150 回答
12

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

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

希望能帮助到你!

于 2012-09-14T12:57:59.750 回答
2

你可以试试这个..

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"
于 2015-06-29T03:37:25.363 回答