Я знаю, что SMTP-сервер требует TLS, поэтому я использую OpenSSL (в Windows).
openssl s_client -connect smtp.gmail.com:465 -crlf
Теперь я знаю, что мне нужно закодировать строку (в основном \x00myemail\x00password
), в которой есть моя учетная запись и пароль, используя base64. Все работает довольно хорошо:
AUTH PLAIN <encodedString>
235 2.7.0 Accepted
Проблема в том, когда я пытаюсь написать свое сообщение:
MAIL FROM:<myemail>
250 2.1.0 OK qwertyzxcv.1 - gstmp
RCPT TO:<myemail>
RENEGOTIATING
depth=1 C = US, O = Google Inc, CN = Google Internet Authority
verify error:num=20:unable to get local issuer certificate
verify return:0
Правда в том, что я не понимаю это сообщение об ошибке. Нужно ли создавать какой-то сертификат? Если да, то как мне это сделать (опять же в Windows)?
РЕДАКТИРОВАТЬ [0]: я наконец решил проблему. Вы ДОЛЖНЫ написать команду rcpt
в нижнем регистре, потому что R
заставляет OpenSSL пересмотреть условия. Но сейчас у меня новая проблема. Похоже, что SMTP-сервер не может распознать команду de DATA
:
DATA
502 5.5.1 Unrecognized command qwertyzxcv.1 -gsmtp