搜索

首页  >  问答  >  正文

PHPMailer 使用 gmail 和 XOAUTH2:当前刷新令牌过期时如何自动获取新的刷新令牌?

我关注使用 Gmail 与 XOAUTH2 (PHPMailer Wiki) 和如何使用 PHPMailer 与 Gmail XOAUTH2 发送电子邮件?(Chandan for w3jar.com;2019 年 5 月)。< /p>

今天,我的网站无法发送电子邮件,因为刷新令牌已过期。

然后我再次阅读 PHPMailer Wiki,发现了这个:

所以,我需要转到此页面并单击 Google

然后选择我将发送电子邮件的帐户。

新令牌刷新将显示如下。

之后,我需要复制此刷新令牌并将其粘贴到我的发送电子邮件函数中。

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\OAuth;
use League\OAuth2\Client\Provider\Google;

function sendEmail($email, $title, $detail)
{
    try {
        $refreshToken = 'I am here';   //////// I am hereeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

        $mail = new PHPMailer(true);

        //Server settings
        $mail->*ANY*;

        //Create a new OAuth2 provider instance
        $provider = new Google([
            'clientId' => $clientId,
            'clientSecret' => $clientSecret
        ]);

        //Pass the OAuth provider instance to PHPMailer
        $mail->setOAuth(new OAuth([
            'provider' => $provider,
            'clientId' => $clientId,
            'clientSecret' => $clientSecret,
            'refreshToken' => $refreshToken,
            'userName' => $senderEmail,
        ]));

        if ($mail->send())  return true;


        return false;
    } catch (\Throwable $th) {
        return null;
    }
}

这就是令牌过期时我必须做的事情。

Gmail 没有任何有关刷新令牌过期的通知。

这给使用我网站的人带来了问题。直到有人联系我告诉我这个问题。

如何自动获取刷新令牌?

此步骤需要有人单击 Google 按钮,然后单击 Gmail 帐户以获取刷新令牌。

用 PHP 可以吗?如何自动化该过程?

P粉207969787P粉207969787260 天前604

全部回复(1)我来回复

  • P粉148434742

    P粉1484347422024-04-07 08:56:06

    最后,我使用两步验证。 参考:https://www.youtube.com/watch?v= mte7LroYd74&list=LL&index=1&t=2s

    回复
    0
  • 取消回复