Я использую PHPMailer с OpenSSL на XAMPP в Windows.
У меня проблемы с установлением SMTP-соединений с шифрованием TLS к нашему почтовому шлюзу.
Я включил * 1005Отладка стенограммы SMTP для PHPMailer .Стенограмма не является сверхинформативной IMO:
[06-Feb-2019 13:48:08 timezone/redacted] SERVER -> CLIENT: 220 redactedmailserver.example.com ESMTP Postfix
[06-Feb-2019 13:48:08 timezone/redacted] CLIENT -> SERVER: EHLO redactedclientname
[06-Feb-2019 13:48:08 timezone/redacted] SERVER -> CLIENT: 250-redactedmailserver.example.com
250-SIZE 52428800
250-ETRN
250-STARTTLS
250-AUTH CRAM-MD5 PLAIN LOGIN DIGEST-MD5
250-AUTH=CRAM-MD5 PLAIN LOGIN DIGEST-MD5
250-ENHANCEDSTATUSCODES
250 8BITMIME
[06-Feb-2019 13:48:08 timezone/redacted] CLIENT -> SERVER: STARTTLS
[06-Feb-2019 13:48:08 timezone/redacted] SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
[06-Feb-2019 13:48:08 timezone/redacted] SMTP Error: Could not connect to SMTP host.
[06-Feb-2019 13:48:08 timezone/redacted] CLIENT -> SERVER: QUIT
[06-Feb-2019 13:48:08 timezone/redacted] SERVER -> CLIENT:
[06-Feb-2019 13:48:08 timezone/redacted] SMTP ERROR: QUIT command failed:
[06-Feb-2019 13:48:08 timezone/redacted] SMTP Error: Could not connect to SMTP host.
[06-Feb-2019 13:48:08 timezone/redacted] SMTP Error: Could not connect to SMTP host.
Стенограмма, по крайней мере, доказывает, что сообщение об ошибке вводит в заблуждение;PHPMailer успешно подключается к SMTP-серверу, но что-то не так с STARTTLS.Тем не менее, сообщение об ошибке и расшифровка не дают никаких намеков на то, в чем может заключаться конкретная проблема TLS.
Подобные симптомы описаны в закрытой проблеме на PHPMailer Github , но проблема устраненаустранение неполадок при подключении с использованием клиента командной строки OpenSSL, как описано на странице устранения неполадок PHPMailer .На этой странице даны некоторые инструкции по , как проверить базовое соединение OpenSSL вне контекста PHP , в котором должны быть подробно описаны причины сбоя соединения.В нем говорится, что нужно выполнить следующую команду:
echo QUIT | openssl s_client -starttls smtp -crlf -connect redactedemailserver.example.com:587
Я предполагаю, что это работает в bash в Linux, но я запускаю XAMPP в Windows.Я попытался выполнить команду PowerShell, которая, как мы надеемся, эквивалентна:
echo QUIT | C:\xampp\php\extras\openssl\openssl.exe s_client -starttls smtp -crlf -connect redactedemailserver.example.com:587
Но, похоже, ничего не произошло.Появляется новая подсказка PowerShell, и нет видимого вывода от openssl.
Я также попытался запустить команду без echo QUIT |
.Тем не менее, ничего не произошло.
В Windows, какие команды PowerShell / openssl.exe можно использовать для определения причины сбоя STARTTLS?
Номера версий:
- XAMPP 7.1.7
- PHP 7.1.7
- PHPMailer 6.0.6
- OpenSSL 1.0.2l