使用PHPMailer 中的报错解决 "Connection failed. Error #2: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:"

PHPMailer项目地址:https://github.com/PHPMailer/PHPMailer

项目中用到PHPMailer,使用过程中报错:"Connection failed. Error #2: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:"

由于我用的第三方smtp是ssl链接,所以需要再添加一些参数:

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

官方是这样说明的:"

This is covered in the troubleshooting docs. PHP 5.6 verifies SSL certificates by default, and if your cert doesn‘t match, it will fail with this error. The correct solution is to fix your SSL config - it‘s not PHP‘s fault!

If you‘re sending on localhost you can use isMail() and it won‘t go through an encryption layer at all."

翻译如下:

疑难解答文档中介绍了这一点。默认情况下,PHP 5.6验证SSL证书,如果您的证书不匹配,则会出现此错误。正确的解决方案是修复您的SSL配置 - 这不是PHP的错误! 如果您正在本地发送,您可以使用isMail(),而不会通过加密层。

可是,我用的是php7.1啊!可见,php7及以上版本保留了php5.6这一特点。加了上述参数后问题解决了。

不过,官方的建议是,为了安全起见,还是建议大家效验ssl证书的。关于PHP是如何效验ssl证书的,请参考:https://secure.php.net/manual/en/context.ssl.php

在PHPMailer里效验证书的方法,是有给出配置的:

$mail->SMTPOptions = array (
    ‘ssl‘ => array(
        ‘verify_peer‘  => true,
        ‘verify_depth‘ => 3,
        ‘allow_self_signed‘ => true,
        ‘peer_name‘ => ‘smtp.example.com‘,
        ‘cafile‘ => ‘/etc/ssl/ca_cert.pem‘,
    )
);

出处:https://github.com/PHPMailer/PHPMailer/issues/368

时间: 2024-10-05 13:42:46

使用PHPMailer 中的报错解决 "Connection failed. Error #2: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:"的相关文章

Android开发过程中部分报错解决方法。

初学Android,最近在使用zxing开发一个条码扫描解析的安卓项目中,遇到以下几个问题.贴出来以供参考. 1.Http请求错误    Android4.0以上要求不能把网络请求的操作放在主线程里操作.使用多线程. 2.java.lang.IllegalStateException: Target host must not be null, or set in parameters.     原因: 连接地址不完整,必须加上"http://". 3.android java.net

zabbix服务器环境--安装过程中的报错解决:【Error: Package】

# 错误提示: --> Finished Dependency Resolution Error: Package: php-ldap-5.4.16-42.el7.x86_64 (base) Requires: php-common(x86-64) = 5.4.16-42.el7 Installed: php-common-5.4.16-45.el7.x86_64 (@base) php-common(x86-64) = 5.4.16-45.el7 Available: php-common-5

AS中一个报错解决:LoggedErrorException: Failed to run command初用Android Studio注意

Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.internal.LoggedErrorException: Failed to run command: D:\Android\android-sdk\build-tools\21.1.1\dx.bat --dex --no-optimize --output E:\开源学习\Canvas\app\build\intermediates\dex\d

jsp页面中onsubmit="return checklogin();"报错解决办法

选择Window->Preferences->MyEclipse->Validation 去掉方框里的对号,然后Apply 然后点击Yes->然后再点击ok->Yes,就好了,如果你打开了那个出现错误jsp页面的话,请关掉重现打开就ok啦 jsp页面中onsubmit="return checklogin();"报错解决办法,布布扣,bubuko.com

MyEclipse中jsp的注释报错解决

jsp页面中注释报错: 出错现场:在eclipse中没有报错,在MyEclipse中报错. <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. --> Myeclipse的js中不会识别这样的标识 需要改成: //  To use express install, set to playerProductInstall.swf, otherwise the empty

安卓中运行报错Error:Execution failed for task &#39;:app:transformClassesWithDexForDebug&#39;解决

安卓中运行报错Error:Execution failed for task ':app:transformClassesWithDexForDebug'解决 安卓中运行报错Error:Execution failed for task ':app:transformClassesWithDexForDebug'解决

定时器setTimeout/setInterval中变量报错:not defined 的解决方法

首先声明本人资质尚浅,如有错误,欢迎指正.共同提高. ----------------------------------------------------------------------------------- 首先声明:本文不重点讨论this作用域,而是讨论普通变量在定时器中容易报错的情况: setTimeout的基本用法不再重述, 详见:http://www.w3school.com.cn/htmldom/met_win_settimeout.asp bug: setTimeout

vuex中的babel编译mapGetters/mapActions报错解决方法

vex使用...mapActions报错解决办法 vuex2增加了mapGetters和mapActions的方法,借助stage2的Object Rest Operator 所在通过 methods:{ ...mapActions([ 'increment' ]) } 酱紫去拿到action.但是我们需要安装babel-preset-stage-2的依赖. 可以使用babel插件, 该插件为 babel-plugin-transform-object-rest-spread 使用方法: npm

zabbix源码安装流程及报错解决方法

zabbix源码安装流程及报错解决方法 一. zabbix的介绍 1) zabbix是什么 zabbix是一款基于web页面的.开源的.企业级的,支持分布式部署的监控软件. 2)2.zabbix的作用 监控windows和Linux主机上的软硬件状态. 监控各网络设备,如路由器.交换机.防火墙.f5.打印机等. 支持邮件短信微信等平台发送告警通知. 通过web页面及图形展示监控数据. 3)zabbix的特性 由zabbix server和agent程序协同工作,还支持分布式监控,这时需要安装za