所以,我用phpMailer通过gmail的smtp发送邮件,这是我的代码
use PHPMailer\PHPMailer\PHPMailer;
require 'vendor\autoload.php';
define('GMailUSER', 'gigabattleboard@gmail.com');
define('GMailPWD', '****************');
function smtpMailer($to, $from, $from_name, $subject, $body) {
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = GMailUser;
$mail->Password = GMailPWD;
$mail->SetFrom($from, $from_name);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress($to);
if(!$mail->Send()) {
return 'Mail error: '.$mail->ErrorInfo;
} else {
return true;
}
}
$result = smtpmailer('fainfutia@mail.com', 'gigabattleboard@mail.com', 'Giga Battleboard', 'Message', 'Subject');
if (true !== $result)
{
echo $result;
}
在激活双重验证后,我在我使用的谷歌账户上创建了一个应用密码,但我仍然得到同样的错误:
2023 - 01 - 13 14:21:05 SMTP错误:密码命令失败:535 - 5.7.8用户名和密码不被接受。要了解更多信息,请访问535 5.7.8 https://support.google.com/mail/?p=BadCredentials s23 - 20020a1cf217000000b003d1e3b1624dsm29449744wmc.2-gsmtp SMTP错误:无法验证。
不幸的是,错误给出的链接并没有给我带来任何结论性的东西。我该如何摆脱这种情况?
1条答案
按热度按时间uajslkp61#
应用程序密码需要在您的代码中使用,而不是您的实际谷歌密码。如果您仍然看到
Username and Password not accepted
.,则您没有在代码中使用应用程序密码。如果这不起作用,让我知道我应该有一个PHP样本浮动左右。
您的代码在应用程序密码下运行良好
我刚刚运行了你的代码。我唯一改变的是固定常量并将from设置为常量的from,而不是硬编码你的电子邮件地址。它运行良好
发送的电子邮件