把服务器php 版本升级到php8.1之后 PHPMailer发送公司邮件程序报错 公司邮箱是iredmail 搭建的.
SMTP Error: Could not connect to SMTP host. Connection failed. stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
php5.几和客户端都不会报错,都能正常发送
找了一个初步的解决方案 忽略证书
$mail->SMTPOptions = array ( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true));
这样觉的有点不好
从iredmail 服务器上把iRedmail.crt拉下来
$mail->SMTPOptions =array ('ssl' => array('cafile'=>'/home/www/iRedmail.crt'));
强行指定证书试了可以发送邮件
到这里发现不对了,有没有可能iredmail 的ssl 证书不对
我发现因为邮箱服务器对外网是nginx跳转到这个iredmail服务器 iredmail服务器并没有更换证书 用的是自签证书
- 将公司的域名证书和密钥改名为iRedMail.crt和iRedMail.key,然后覆盖/etc/pki/tls/certs/iRedMail.crt 和 /etc/pki/tls/private/iRedMail.key
-
- 重启nginx: systemctl restart nginx
-
- 最后竟然搞定了
版权声明:《 PHPMailer生成PHP警告:stream_socket_enable_crypto():对等证书与预期不匹配 》为zhangkang原创文章,转载请注明出处!
最后编辑:2023-3-7 18:03:59