什么是Curl SMTP命令行参数以支持GMail TLS / STARTTLS与SSL

时间:2012-05-09 19:52:51

标签: email ssl curl command-line smtp

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

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

我已使用以下命令行使用Explicit 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起作用的正确命令行参数是什么?

3 个答案:

答案 0 :(得分: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
希望它有所帮助!

答案 1 :(得分:10)

对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 :(得分:1)

你可以试试这个..

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"