【发布时间】:2015-09-19 17:30:15
【问题描述】:
我刚刚将我的 XAMPP 开发平台从 1.7.3 更新到 OS X 的最新版本 5.6.8。这将 PHP 从 5.3.1 更新到 5.6.8。它破坏了通过 SSL 连接(不是 TLS)上的 SMTP 向我的托管站点邮件服务器发送访问者查询的 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
这就是我所做的
- 修改 PHPMailer 以接受 SSL 上下文选项
PHP Mailer
send函数不接受 SSL 上下文选项,尽管内部 SMTPconnect函数有可选参数。我还取消了函数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.
请指导我解决这个问题。
【问题讨论】:
标签: php email ssl xampp phpmailer