PHP Mailer для Outlook: данные не принимаются Адрес получателя, указанный RFC 2606

Когда я пытаюсь отправить электронное письмо в свою учетную запись Outlook, я получаю сообщение об ошибке: SMTP Error: данные не принимаются. Сообщение не может быть отправлено. Ошибка отправителя: Ошибка SMTP: данные не приняты. Ошибка сервера SMTP: команда DATA END не выполнена. Подробно: 501. 5.1.5 Адрес получателя, зарезервированный кодом RFC 2606 SMTP: 550 Дополнительная информация SMTP: 5.3.4. Я пробовал с моей учетной записью Gmail, но это работает, но не с Outlook. Кто-нибудь может мне помочь?

Здесь код:

 <?php
require 'phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->SMTPDebug = 2;                               // Enable verbose debug output

$mail->isSMTP();                     
$mail->Host = 'smtp-mail.outlook.com';              // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                             // Enable SMTP authentication
$mail->Username = '[email protected]';       // SMTP username
$mail->Password = '***********';                    // SMTP password
$mail->SMTPSecure = 'TLS';                          // Enable TLS encryption, 'ssl' also accepted
$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);                            
$mail->Port = 587;                                             // TCP port to connect to

$mail->setFrom('[email protected]');
$mail->addAddress('[email protected]', 'Joe User');     // Add a recipient
$mail->addAddress('[email protected]');                        // Name is optional
$mail->addReplyTo('[email protected]', 'Information');
$mail->addCC('[email protected]');
$mail->addBCC('[email protected]');


$mail->isHTML(true);                                           // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
?>
+1
источник поделиться
1 ответ

RFC2606 определяет некоторые домены, которые обозначены как, например, только для использования, и гарантировано никогда не существовать. в частности они включают example.com, example.org и example.net. Это означает, что вы можете использовать разумных адресатов в примере кода, не опасаясь непреднамеренно отправлять электронную почту или другой трафик случайным людям, что может случиться, если вы используете составленное имя, например mydomain.com потому что оно действительно может существовать.

Ошибка, которую вы видите, признала, что вы используете зарезервированный домен, как это, и поэтому отказываетесь принять ваше представление. Используйте реальные адреса или удалите строки, в которых используются зарезервированные адреса, и он будет работать.

Вы неправильно установили параметр SMTPSecure - он чувствителен к регистру, поэтому он должен быть:

$mail->SMTPSecure = 'tls';

Вы отключите проверку сертификата через SMTPOptions - Outlook/Hotmail и т.д. Обычно служат для проверки достоверных сертификатов, поэтому вам нужно только отключить проверку для решения конкретной проблемы, поскольку это не безопасный способ избежать вопросов проверки, то есть не делайте этого, если вы действительно необходимо по известной, конкретной причине.

+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос