PHP5.6 PHPMailer 发送邮件SMTP connect() failed解决方案

原创 阁主  2022-03-01 09:40:21  阅读 4168 次 评论 1 条
摘要:

阿帕云装上宝塔后,配置好的SSL邮件服务,邮件一直就没收到过,今天抽时间看看。同时也让我想起之前有写过一篇类似的文章,当时是因为在本地写测试cURL请求也是因为SSL证书问题导致的。点我访问 这两个问题简直是一毛一样的存在,相同的问题,一样的解决方法。

前言

今天抽空解决了一下,后面是发现PHP5.6开始默认开启了SSL的证书验证,个别情况会导致验证失败的情况,也就导致了无法发送的问题。

报错.png

先后慢慢排查才排查出来的,因为也在zblog后台进行同样发件配置测试,ZBLOG使用的是PHP7.4版本,可以正常发信。

zblog7.4测试正常.png

解决方法

还是简单粗暴的方法,在确认PHP开始基本SSL、socket扩展情况下,直接改phpmailer的源代码SMTPOptions属性配置,设置不验证SSL证书。

打开phpmailer文件夹,找到class.smtp.php文件,在文件内搜索下面关键代码,大概在258行左右。

connect($host, $port = null, $timeout = 30, $options = array())

258行.png

接下来就是在这个函数下面添加下面的代码,添加位置看清楚。

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);
       }

禁止解析.png

保存修改后,再次测试发件就正常了。

发送正常.png

结语

总的来说,重点还是要给phpmailer设置忽略解析SSL证书,这样就可以达到个别程序无法发件的问题。本文参考的解决文章是:点我访问

本文地址:https://www.mainblog.cn/271.html
版权声明:本文为原创文章,版权归 阁主 所有,欢迎分享本文,转载请保留出处!
免责申明:有些内容源于网络,没能联系到作者。如侵犯到你的权益请告知,我们会尽快删除相关内容。

评论已关闭!