我们使用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
欢迎任何建议,谢谢!
答案 0 :(得分:3)
如果您没有配置该证书,那么从服务器获取该证书是很奇怪的。它可能由您的ISP重定向您的流量,但我不希望这会影响localhost。
您可以使用$mail->SMTPSecure = false;
完全关闭加密(对于本地主机是安全的,因为没有外部网络流量),但您可能还需要设置$mail->SMTPAutoTLS = false;
以防止它自动重新启用服务器广告STARTTLS
。
或者,此主机可能在thisvps.com
域中具有您可以使用的主机名,然后该名称将与证书匹配。