我正在使用IIS托管PHP 5.6.11运行Windows 10 Pro。在过去,旧版本的PHPMail非常适合在这种类型的Windows / IIS / PHP设置中通过gmail发送电子邮件。在过去的某个时刻它退出了工作。所以我现在使用最新的PHPMail库,截至2018年1月6日。这是我的简单示例,主要来自this gmail example。
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
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 [.....\PHPMailer\src\SMTP.php line 405]
我该如何解决这个问题?
更新:我找到了问题的真正来源,并在此帖中更新了错误消息,但我不知道如何解决。
答案 0 :(得分:1)
有很多情况你必须检查
答案 1 :(得分:0)
更改代码中的以下值。
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPDebug = 2; //Get Error Details
希望这是有效的。
答案 2 :(得分:0)
我已经尝试过在Stackoverflow上编写的所有内容,但没有运气。最后我省略了这一行:
$mail->isSMTP();
当然这不是一个解决方案,但在我的情况下,我必须解决问题,它只是做到了。现在我使用php的原始mail()函数。顺便说一下,我尝试使用Gmail和Hotmail SMTP服务。我不希望任何人像我一样花这么多时间。
答案 3 :(得分:0)
当我在IIS中安装了正确的证书时,一切都解决了。