PHPMailer SMTP localhost,证书错误

时间:2017-06-26 12:29:17

标签: php email ssl certificate phpmailer

我们使用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&#39。与预期的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

欢迎任何建议,谢谢!

1 个答案:

答案 0 :(得分:3)

如果您没有配置该证书,那么从服务器获取该证书是很奇怪的。它可能由您的ISP重定向您的流量,但我不希望这会影响localhost。

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

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