【发布时间】:2017-11-05 12:40:16
【问题描述】:
我有这个 PHP 函数:
public static function smtpmailer($to, $from, $from_name, $subject, $body) {
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 0; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = "someemail@gmail.com";
$mail->Password = "somepassword";
$mail->SetFrom($from, $from_name);
$mail->Subject = $subject;
$mail->Body = $body;
if (is_string($to)) {
$to = array($to);
}
foreach ($to as $t) {
$mail->AddAddress($t);
}
if(!$mail->Send()) {
$error = 'Mail error: '.$mail->ErrorInfo;
return false;
} else {
$error = 'Message sent!';
return true;
}
}
这个之前用过成功,现在却给我一个不明白的错误:
string(1553) "警告 [2] stream_socket_enable_crypto(): SSL 操作失败,代码为 1。OpenSSL 错误消息: 错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书 验证失败
有些认证没有通过,但是用户名和密码都是正确的。这之前成功地从 URL1 使用过,我将此代码复制到另一个具有 URL2 的站点。但是,发生了上述错误。当我在 URL1 上尝试此操作时,为了确定这是否是我用于电子邮件验证的 gmail 帐户中的设置问题,我遇到了同样的错误。我的问题是:我应该解决什么问题以及如何才能成功发送关于 gmail 帐户设置和我上面显示的代码的身份验证电子邮件?
编辑
此问题与在此问题上标记为的问题之间的差异:
- 这是一个涉及 PHP 代码的问题,该问题是关于 Pythonic 问题的
- 这个问题非常具体地涉及 gmail 的使用以及遵守 google smtp 条款和政策的愿望
- 另一个问题是关于文件下载,这个问题是关于从给定的 gmail 地址发送电子邮件
- 另一个问题是关于浏览器中带有证书的弹出窗口,这里的事情发生在服务器端
【问题讨论】:
-
@kabanus 我认为这不是重复的,因为这是关于以以前有效的方式满足 gmail 的要求,但由于至少我不知道的更改现在无法正常工作。
-
您确定这不是您以前拥有的 gmail 证书或主机名更改?
-
@kabanus for URL2 我有一个不同的主机名。但是对于 URL1,我使用的是之前创建并在当时有效的证书。我也使用 URL1 进行了测试,以排除由于错误的证书和/或主机名更改而导致问题的可能性。
-
@kabanus 我已升级 PHPMailer,但没有收到以下错误:邮件错误:SMTP 连接()失败。
-
我需要根据github.com/PHPMailer/PHPMailer/issues/149从465上的ssl切换到587上的tls。但是连接还是不成功
标签: php authentication ssl gmail