PHPMailer SMTP本地主机,证书错误

我们使用PHPMailer.服务器配置为使用本地SMTP.
因此,一般的PHPMailer突击队看起来像这样:

$mail = new PHPMailer();
$mail->From = 'info@localdomain.com';
$mail->Host = 'localhost';
$mail->IsSMTP();
...

从PHP5.6开始,这不再起作用,因为证书不匹配.我们收到以下错误:

Warning: stream_socket_enable_crypto(): Peer certificate
CN=’*.thisvps.com’ did not match expected CN=’localhost’ in /ho…PHPMailer_latest/class.smtp.php

我可以使用以下方法抑制此错误:

$this->smtpConnect([
   'ssl' => [
       'verify_peer' => false,
       'verify_peer_name' => false,
       'allow_self_signed' => true
   ]
]);

但是,这是正确的方法吗?我不喜欢抑制错误;).
还是我们的配置有错误?

版本信息:
PHP 5.6.30,
PHPMailer:5.2.21

欢迎任何建议,谢谢!

解决方法:

奇怪的是,如果您没有配置该证书,则会从服务器获取该证书.这可能取决于您的ISP重定向您的流量,尽管我不希望这会影响localhost.

您可以使用$mail-> SMTPSecure = false;完全关闭加密(对本地主机来说是安全的,因为没有外部网络流量),尽管您可能还需要设置$mail-> SMTPAutoTLS = false;以防止您的服务器发布STARTTLS时自动重新启用它.

或者,此主机可能在thisvps.com域中具有一个主机名,您可以使用该主机名,然后该名称将与证书匹配.

上一篇:PHP Mailer错误:无法发送消息.Mailer错误:SMTP connect()失败


下一篇:如何使用phpmailer并从ckeditor以html格式发送邮件