Что такое аргументы командной строки Curl SMTP для поддержки GMail TLS/STARTTLS vs SSL
Я использую Curl.exe в приложении для отправки писем. Мне нужно поддерживать большинство основных почтовых серверов. GMail предоставляет следующие порты и методы проверки подлинности.
- TLS/STARTTLS (иногда называемый явным TLS): использует порт 587
- SSL (иногда называемый неявным TLS): использует порт 465
Я получил Явный TLS для работы, используя следующую командную строку:
C:\>curl smtp://smtp.gmail.com:587 -v --mail-from "[email protected]" --mail-rcpt
"[email protected]" --ssl -u [email protected]:password -T "c:\test.txt" -k --anyauth
Я попробовал следующее, чтобы заставить ImplicitTLS работать, но это не так.
C:\>curl smtp://smtp.gmail.com:465 -v --mail-from "[email protected]" --mail-rcpt
"[email protected]" --ssl -u [email protected]:password -T "c:\test.txt" -k --anyauth
Каковы правильные параметры командной строки, чтобы заставить SSL/Implicit TLS работать?
Ответы
Ответ 1
Используйте smtps://
для SMTPS (т.е. SMTP поверх существующего соединения SSL/TLS).
Это работает:
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 "[email protected]" --mail-rcpt "[email protected]" --ssl -u [email protected]:password -T "test.txt" -k --anyauth
надеюсь, что это поможет!
Ответ 3
Вы можете попробовать это.
curl --url "smtps://smtp.gmail.com:465" --ssl-reqd --mail-from "[email protected]" --mail-rcpt "[email protected]" --upload-file /var/scripts/mail.txt --user "[email protected]:senderGmailPassword"