Из всех постов, которые я видел здесь, это единственное исправление. Спасибо Джейсон.

м недавно столкнулся с этой ошибкой при попытке отправить почту через SMTP и GMail.

Warning: stream_socket_enable_crypto(): SSL operation failed with code 1.
OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in C:\xampp\htdocs\portal\libraries\php_mailer\class.smtp.php on line 343
2017-12-05 09:48:03 SMTP Error: Could not connect to SMTP host. 
2017-12-05 09:48:03 CLIENT -> SERVER: QUIT 
2017-12-05 09:48:03 SMTP ERROR: QUIT command failed:

Адрес сервераhttps://gg-portal.comи SSL конфигурация кажется правильной (проверено с помощью онлайн-проверок).

Код PHPMailer это ...

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->Username = $this->_config["EmailUser"];
$mail->Password = $this->_config["EmailPass"];
$mail->SMTPSecure = "tls";
$mail->SMTPDebug = 1;
$mail->Port = 587;
$mail->FromName = $this->_config["Brand"];  
$mail->From     = $this->_config["EmailFrom"];
$mail->AddCC("...emailAddress...");
$mail->Subject  = "...subject...";
$mail->Body     = "...content...";
$mail->IsHTML(true);  
$mail->WordWrap = 50;
if(!$mail->Send()) {
    echo ' Message was not sent.';
    echo 'Mailer error: ' . $mail->ErrorInfo;
}

Посмотрел документацию, которая предлагает проблемы с сертификатами, хотя, как указано, настройка SSL выглядит нормально. Посмотрели проблему в другом месте, и самые популярные предложения - обойти SSL (который работает), однако я бы предпочел не делать этого.

'context' => [
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    ]
]
 Nick Dawes28 дек. 2017 г., 15:30
Проверено, ответ Джейсона работал извинения за задержку в маркировке проблемы как решенной.
 Douglas Gaskell14 дек. 2017 г., 01:20
Ник, тебе следует проверить ответ Джейсона и принять его, если он решит твою проблему.
 Synchro05 дек. 2017 г., 11:24
Проблемы с SSL при отправке почты не имеют ничего общего с сертификатом на вашем сайте; Это связано с сертификатами Gmails и тем, как ваша ОС проверяет их. Самое главное, чтобы установитьSMTPDebug = 2 (как говорится в руководстве), чтобы вы могли видеть ответы сервера - в противном случае вы летите вслепую. Пожалуйста, используйте последнюю версию PHPMailer.

Ответы на вопрос(1)

Решение Вопроса

indows php, загрузив обновленный файл корневых сертификатов и указав на него файл php.ini. Кажется, проблема была не в сертификате gmail, а в устаревшем файле корневого сертификата из-за того, что windows server 2012 больше не обновляет этот файл автоматически. Загрузите cacert.pem здесь:https://curl.haxx.se/docs/caextract.html, Затем в php.ini используйте следующую строку, чтобы указать на нее (при условии, что у вас установлен openssl.dll).

openssl.cafile = {Путь к файлу на вашем сервере} \ cacert.pem.

Это исправило это, и мне больше не нужно было обходить проверку SSL / TLS, как предложено. В конечном итоге мне нужно получить окна для автоматического обновления корневых сертификатов с помощью GPO или WSUS. видетьhttps://serverfault.com/questions/541922/where-to-get-root-ca-certificates-for-windows-server-now-that-microsoft-no-longe

 Douglas Gaskell14 дек. 2017 г., 01:20
Из всех постов, которые я видел здесь, это единственное исправление. Спасибо Джейсон.

Ваш ответ на вопрос