Сертификат однорангового узла не соответствует & quot; smtp.office354.com & quot; используя phpmailer

Хорошего дня,

У меня была ошибка в моей конфигурации phpmailer smtp на smtp.office365.com

вот мой сценарий

require __DIR__ .'/vendor/phpmailer/phpmailer/src/Exception.php';
require __DIR__ .'/vendor/phpmailer/phpmailer/src/PHPMailer.php';
require __DIR__ .'/vendor/phpmailer/phpmailer/src/SMTP.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;$mail = new PHPMailer(true);                              // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 4;                                 // Enable verbose debug output
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = gethostbyname('smtp.office365.com'); // Specify main and backup SMTP servers

$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'office365 username';                 // SMTP username
$mail->Password = 'office365 password';                           // SMTP password
$mail->SMTPOptions = array (
'ssl' => array(
// 'verify_peer'  => false,

// 'verify_peer_name'  => false,
// 'allow_self_signed' => true
));
$mail->Port = 587;                                    // TCP port to connect to

//Recipients
$mail->From       = $mail->Username;
$mail->addAddress('recipient@gmail.com');               // Name is optional
//Attachments

//Content
$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';

$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}

Я получил эту ошибку

stream_socket_enable_crypto(): Peer certificate CN=`servername.com' did not match expected CN=`smtp.office365.com'

если я раскомментирую

$mail->SMTPOptions = array (
'ssl' => array(
// 'verify_peer'  => false,
'peer_name'         => 'smtp.office365.com',
// 'verify_peer_name'  => false,
// 'allow_self_signed' => true
));

Я все еще получаю ошибку аутентификации ..

Я не очень хорош в настройке сервера, так как кто-то настраивает сервер. но мой сайт на https.

0

Решение

Подумай, что это значит. Вы просите подключиться к указанному хосту, но имя в сертификате не совпадает. Это означает, что либо сервер настроен неправильно (маловероятно для office365), либо вы перенаправлены на другой сервер, который использует другое имя. Это очень вероятно, так как это очень распространено в крупных хостинг-провайдерах. Все будет раскрыто, если вы установите SMTPDebug = 2, как руководство по поиску и устранению неисправностей, ссылка на сообщение об ошибке предлагает.

То, что это произошло, является хорошо Дело в том, что это одна из основных причин использования TLS — он не только шифрует ваш трафик в пути, но и дает гарантию того, что сервер, к которому вы подключились, тот, к которому вы ожидали, то есть он выполняет свою работу должным образом.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector