У вас возникла проблема с отправкой электронной почты с почтового сервера с самоподписанным сертификатом, ошибка, которую я получаю:
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
Поэтому просто следуйте ответам Кафа и посмотрите, работает ли это для вас.