【问题标题】:PHPMailer SMTP localhost, certificate errorPHPMailer SMTP localhost,证书错误
【发布时间】:2023-03-31 23:35:01
【问题描述】:

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

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

自 PHP5.6 起,这不再起作用,因为证书不匹配。我们得到以下错误:

警告:stream_socket_enable_crypto():对等证书 CN='*.thisvps.com' 与 /ho...PHPMailer_latest/class.smtp.php 中的预期 CN='localhost' 不匹配

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

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

但是,这是正确的方法吗?我不是抑制错误的忠实粉丝;)。 还是我们的配置有错误?

版本信息: PHP 5.6.30, PHPMailer:5.2.21

欢迎任何建议,在此先感谢!

【问题讨论】:

    标签: php email ssl certificate phpmailer


    【解决方案1】:

    如果不是您配置的证书,您从服务器获取该证书是很奇怪的。这可能取决于您的 ISP 重定向您的流量,但我不认为这会影响 localhost。

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

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

    【讨论】:

    • 对于主机名 (x.thisvps.nl) 我已经为 SMTP 连接安装了证书,因为在此之前,错误是根本没有安装证书。查看 PHPmailer 的调试信息,它看起来像是与 x.thisvps.nl 的连接(可能通过将 localhost 转换为主机名或其他内容)。但没有运气.. 感谢您的回答!我现在将禁用 SMTP 安全,因为它已保存。
    猜你喜欢
    • 2017-08-19
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多