我在应用程序中使用Curl.exe来发送电子邮件。我需要支持大多数主要的电子邮件服务器GMail公开以下端口和身份验证方法。
我已使用以下命令行使用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起作用的正确命令行参数是什么?
答案 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"