我刚刚将我的XAMPP开发平台从1.7.3更新到OS X的最新版本5.6.8。这将PHP从5.3.1更新到5.6.8。它破坏了通过SSL连接(而不是TLS)向我的主机站点邮件服务器发送访问者查询的PHPMailer。问题是我的托管网站只使用自签名证书进行身份验证。这对旧的XAMPP没有影响。但是使用最新版本,PHPMailer用于SMTP的函数stream_socket_client
会生成此错误:
SSL operation failed with code 1.
OpenSSL Error messages: error:14090086:
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
这就是我所做的
send
函数具有可选参数,但PHP Mailer connect
函数还不接受SSL上下文选项。此外,我解除了函数stream_socket_client
的错误消息。我使用这个选项:$mail->SMTPOption = array( 'smtp' => array(
'verify_peer' => false,
'verivy_peer_name' => false, 'allow_self_signed' => true) );
但是这没有效果,OpenSSL仍然提出了上述信息。
在php.ini中添加openssl.cafile和openssl.capath属性。它仍然无效。
PHPMailer Debug输出只有这个内容
Connection: opening to ssl://wates.idwebhost.com:465, t=300, opt=array ( 'smtp' => array ( 'verify_peer' => false, 'verivy_peer_name' => false, 'allow_self_signed' => true, ),) SMTP ERROR: Failed to connect to server: (0) SMTP connect() failed.
请指导我解决这个问题。
答案 0 :(得分:0)
好的,显然我使用旧版本的PHPMailer。更新到5.2.10版本后,问题就解决了。