PHPMailer & STARTTLS не отправляет электронную почту

Сообщение не отправляется с такими настройками

$mail = new PHPMailer;
$mail->SMTPDebug = 4;                               
$mail->isSMTP();                                      
$mail->Host = "domain.com";  
$mail->SMTPAuth = true;                               
$mail->Username = "login";                 
$mail->Password = "pasw";                         
$mail->SMTPSecure = "tls";                            
$mail->Port = 2525;                                    
$mail->CharSet = 'UTF-8';

Расширение openssl загружено. Вывод отладки здесь https://justpaste.it/1ecjw Первая проблемная строка 2017-12-08 09:48:53 SMTP -> get_lines(): $str is "502 5.5.1 command not supported in "STARTTLS""

Телнет говорит, что есть служба ESMTP. Я не знаю, что расследовать дальше...

1 ответ

Решение

Не слишком сложно - ваш почтовый сервер не поддерживает STARTTLS, Если бы он это сделал, он появится в списке возможностей после первого EHLO команда, которая это:

250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250-8BITMIME
250-AUTH CRAM-MD5 PLAIN LOGIN
250-AUTH=CRAM-MD5 PLAIN LOGIN
250-XACK
250-SIZE 0
250-VERP
250 DSN

STARTTLS нет в этом списке. Он все еще может поддерживать шифрование через SMTPSecure = 'ssl' а также Port = 465, но в противном случае вам нужно будет вернуться к наиболее безопасному варианту аутентификации по этому незашифрованному каналу, который AuthType = 'CRAM-MD5',

ESMTP просто означает, что он поддерживает "Расширенный SMTP" с EHLO (и все, что это подразумевает), а не только основной SMTP HELO,

Кстати - SMTPDebug = 4 слишком шумно для этого уровня проблемы, вам нужно максимум 3. Кроме того, вы используете старую версию PHPMailer, обновление.

Другие вопросы по тегам