PHP Mailer"警告:stream_socket_enable_crypto():"错误

时间:2017-10-03 15:06:43

标签: php ssl phpmailer

我的PHPMailer存在持续的SMTP问题,如下所述:https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#php-56-certificate-verification-failure

我已经看过给出的错误,据我所知,这是罪魁祸首

  

警告:stream_socket_enable_crypto():对等证书CN = *.mywebhost.com' did not match expected CN= mail.mydomain.com'在第355行的/path/to/phpmailer/class.smtp.php中

其他想法/信息。

  1. 我安装了SSL,并且我在此验证了它的合法性:https://www.digicert.com/help/
  2. 这是一个共享托管环境。
  3. 这是一个PHP 7环境。
  4. 这是子域设置。因此,SSL适用于 sub.mydomain.com $mail->Host mail.mydomain.com 。我不知道这是否相关,但这是什么。
  5. 我已经通过了PHPMailer文档,但我不知道为什么还会发生这种情况。有效的SSL,没有SMTP .....我有什么想法可以检查解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

你可能有这套:

$mail->Host = 'mail.mydomain.com';

但是当你连接到它时,它实际上连接到你的ISP的邮件主机(可能是mail.mywebhost.com,它提供*.mywebhost.com证书),当然,服务器证书上的名称你有没有匹配。对此的正确解决方案是更改您的Host属性以使用邮件服务器的真实名称,因为证书将匹配,并且您将不会出现不匹配错误:

$mail->Host = 'mail.mywebhost.com';

(你需要找出确切名称应该是什么)。为了使用您自己的证书,您需要在自己的IP上运行自己的邮件服务器,这是您不可能在共享主机上获得的。

故障排除指南中还描述了另一种解决方法,即禁用证书验证(如5.6之前的PHP) - 但您不应该这样做。你知道为什么会失败,所以你应该正确修复它,而不是简单地抑制错误。

相关问题