遇到从具有自签名证书的邮件服务器发送电子邮件的问题,我得到的错误是:
PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in class.smtp.php on line 327.有人遇到过类似的事情吗?
编辑:
我还尝试设置stream_context参数( params:SSL上下文选项):
$options['ssl']['verify_peer'] = false;
$options['ssl']['verify_peer_name'] = false;
$options['ssl']['allow_self_signed'] = true;没有运气,它仍然失败与上面指出的相同的错误。
谢谢。
发布于 2015-02-27 07:47:27
PHP5.6引入了SSL证书验证,因此如果您的配置被破坏,它将在此错误中失败。您应该修复SSL,但是可以通过将SMTPOptions属性设置为“不验证证书”来恢复旧的行为:
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);编辑库会破坏库的全部功能--如果您按照Kaf的回答来做,您的代码在升级时就会中断。真的,别那么做。
编辑器的备注:禁用SSL验证具有安全含义。不验证SSL/HTTPS连接的真实性,恶意攻击者就可以模拟可信端点(例如GitHub或其他远程Git主机),您将容易受到中间人攻击的攻击。在使用作为解决方案之前,请确保您完全了解安全问题。
发布于 2015-01-13 14:14:47
我也有同样的问题。因此,我更改了第238行中的文件class.smtp.php:
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);
}现在一切都好了!
编辑器的备注:禁用SSL验证具有安全含义。不验证SSL/HTTPS连接的真实性,恶意攻击者就可以模拟可信端点(例如GitHub或其他远程Git主机),您将容易受到中间人攻击的攻击。在使用作为解决方案之前,请确保您完全了解安全问题。
发布于 2017-03-10 14:54:25
我也有同样的问题。结果发现,我的后缀配置缺少中间层和根证书设置:
smtpd_tls_CAfile=/etc/ssl/certs/intermediate-root-bundle.crt尽管这个后缀配置已经在Outlook和Thunderbird中工作了多年,但是PHP更加挑剔,并且没有通过SSL检查。
因此,即使您可能想黑PHPMailer,请不要,并修复潜在的问题。
https://stackoverflow.com/questions/26827192
复制相似问题