PHPMailer – SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена

У вас возникла проблема с отправкой электронной почты с почтового сервера с самоподписанным сертификатом, ошибка, которую я получаю:

PHP 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 class.smtp.php on line 327. 

Кто-нибудь сталкивался с чем-то похожим?

РЕДАКТИРОВАТЬ:

Я также попытался установить параметры stream_context (параметры params: SSL ):

 $options['ssl']['verify_peer'] = false; $options['ssl']['verify_peer_name'] = false; $options['ssl']['allow_self_signed'] = true; 

Не повезло, он по-прежнему терпит неудачу с той же ошибкой, как указано выше.

Благодарю.

PHP 5.6 вводит проверку сертификата SSL, поэтому, если ваша конфигурация нарушена, с этой ошибкой произойдет сбой. Вы должны исправить свой SSL, но вы можете вернуться к старому поведению, установив свойство SMTPOptions чтобы не проверять сертификаты:

 $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); 

Редактирование библиотеки поражает всю точку библиотек – и если вы сделаете так, как говорит Каф, ваш код сломается при обновлении. На самом деле, не делай этого.

У меня такая же проблема. Поэтому я изменил файл class.smtp.php в строке 238:

 public function connect($host, $port = null, $timeout = 30, $options = array()) { if (count($options) == 0) { $options['ssl'] = array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true); } 

теперь он отлично работает!

мой ответ относится к @Synchro, я помещаю этот код в свою почтовую программу, и теперь его работа прекрасна, TY.

 $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true )); 

У меня такая же проблема. Оказалось, что в моей конфигурации Postfix отсутствовали настройки промежуточных и корневых сертификатов:

 smtpd_tls_CAfile=/etc/ssl/certs/intermediate-root-bundle.crt 

Несмотря на то, что эта конфигурация Postfix много лет работает с Outlook и Thunderbird, PHP был более придирчивым и не прошел проверку SSL.

Поэтому, даже если у вас может возникнуть соблазн взломать PHPMailer, не делайте этого, и устраните основную проблему.

Просто хотел поставить свои 2 цента, так как я искал исправление в течение нескольких дней, пока не попробовал решение Kaf, и это сработало! Спасибо @Kaf

В любом случае … Для меня PHPMailer работал нормально, пока я не решил обновить PHP до PHP5.6

Были внесены изменения для открытия ssl в PHP 5.6. Вот официальные документы:

http://php.net/manual/en/migration56.openssl.php

В документах говорится, что для проверки подлинности verify_peer и verify_peer_name установлено значение false

Поэтому просто следуйте ответам Кафа и посмотрите, работает ли это для вас.