无法通过本地计算机上的 IIS 通过 gmail 帐户发送 PHPMailer



我正在运行Windows 10 Pro,IIS托管PHP 5.6.11。过去,旧版本的PHPMail非常适合在这种类型的Windows/IIS/PHP设置中通过gmail发送电子邮件。在过去的某个时候,它停止工作。所以现在我使用的是截至 2018 年 1 月 6 日的最新 PHPMail 库。这是我的简单示例,主要取自这个gmail示例。

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';
$mail = new PHPMailer;
$mail->isSMTP(); 
$mail->SMTPDebug = 2;
$mail->Host = "smtp.gmail.com";
$mail->Port = 587; // TLS only
$mail->SMTPSecure = "tls"; // ssl is depracated
$mail->SMTPAuth = true;
$mail->Username = $smtpUsername;
$mail->Password = $smtpPassword;
$mail->setFrom($emailFrom, $emailFromName);
$mail->addAddress($emailTo, $emailToName);
$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->msgHTML("test body"); 
$mail->AltBody = 'HTML messaging not supported';
if(!$mail->send()){
    echo "Mailer Error: " . $mail->ErrorInfo;
}else{
    echo "Message sent!";
}

这是罪魁祸首:

Connection failed. Error #2: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed [.....PHPMailersrcSMTP.php line 405]

我该如何解决这个问题?

更新

:我找到了问题的真正来源并更新了这篇文章中的错误消息,但我不知道如何解决。

有很多情况你必须检查,比如

  • 打开SSL启用使用你php ini
  • 您必须检查防火墙是否能够成功访问Gmail服务器。
  • 等您可以在此处找到更多解决方案和案例

在代码中更改以下值。

$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPDebug = 2; //Get Error Details

希望这是工作。

我已经尝试了在Stackoverflow上编写的所有内容,但没有运气。最后我省略了这行:

$mail->isSMTP();

当然这不是一个解决方案,但就我而言,我必须解决问题,它就做到了。现在我正在使用 php 的原始 mail(( 函数。顺便说一下,我尝试使用Gmail和Hotmail SMTP服务。我不希望任何人像我一样花这么多时间在这上面。

当我在 IIS 中安装正确的证书时,一切都解决了。

最新更新