无法使用php中的应用程序密码访问我的gmail smtp客户端

vc9ivgsu  于 2023-01-16  发布在  PHP
关注(0)|答案(1)|浏览(101)

所以,我用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错误:无法验证。
不幸的是,错误给出的链接并没有给我带来任何结论性的东西。我该如何摆脱这种情况?

uajslkp6

uajslkp61#

应用程序密码需要在您的代码中使用,而不是您的实际谷歌密码。如果您仍然看到Username and Password not accepted .,则您没有在代码中使用应用程序密码。

$mail->Username = GMailUser;
$mail->Password = AppsPassWord;

如果这不起作用,让我知道我应该有一个PHP样本浮动左右。

您的代码在应用程序密码下运行良好

我刚刚运行了你的代码。我唯一改变的是固定常量并将from设置为常量的from,而不是硬编码你的电子邮件地址。它运行良好

<?php

// Run composer require phpmailer/phpmailer

use PHPMailer\PHPMailer\PHPMailer;
require 'vendor\autoload.php';

const GMailUSEREmail = 'MyEmailAddress';
const GoogleAppsPassword = 'MyAppsPassword';

function smtpMailer($to, $from, $from_name, $subject, $body): bool|string
{
    $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 = GMailUSEREmail;
    $mail->Password = GoogleAppsPassword;
    $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(GMailUSEREmail, GMailUSEREmail, 'Giga Battleboard', 'Message', 'Subject');
if (true !== $result)
{
    echo $result;
}

发送的电子邮件

相关问题