#php #phpmailer
Вопрос:
Я использую этот код, который я долгое время использовал с сервером Linux для почты, но недавно перешел в Office 365 и обновил учетные данные.
Я также добавил $email->SMTPSecure = '';
для 365.
$email = new PHPMailer();
$email->SMTPDebug = 2;
$email->IsSMTP();
$email->SMTPAuth = true;
$email->IsHTML(true);
$email->Host = '';
$email->Port = 587;
$email->Username = '';
$email->Password = '';
Но я получаю ошибку
SMTP -> FROM SERVER:220 LO2P265CA0058.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sun, 3 Oct 2021 12:18:59 0000
SMTP -> FROM SERVER: 250-LO2P265CA0058.outlook.office365.com Hello [***] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 SMTPUTF8
SMTP -> ERROR: AUTH not accepted from server: 504 5.7.4 Unrecognized authentication type [LO2P265CA0058.GBRP265.PROD.OUTLOOK.COM]
SMTP -> FROM SERVER:221 2.0.0 Service closing transmission channel
SMTP Connect() failed.
Я использовал этот инструмент для проверки настроек, и он отлично работает https://www.gmass.co/smtp-test
Ответ №1:
Похоже, вы используете старую версию PHPMailer, поэтому обновите ее. Ваш отладочный вывод не включает трафик на стороне клиента, поэтому мы не можем видеть, что говорит ваш клиент, однако я могу догадаться. По какой-то причине у вас отключено шифрование, и, как вы можете видеть, сервер не перечисляет аутентификацию среди своих возможностей в этом начальном незашифрованном состоянии:
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8
Обычно PHPMailer обнаружит, что сервер предлагает STARTTLS, и автоматически включит шифрование, и я не понимаю, почему ваш код не будет работать с этим, если вы не используете действительно очень старую версию.
Итак, обновите, а затем добавьте эту строку:
$mail->SMTPSecure = 'tls';
После запуска клиент выдаст новую команду EHLO, и вы увидите новый набор возможностей, который будет включать аутентификацию, и поэтому вы сможете пройти аутентификацию.