搜尋

首頁  >  問答  >  主體

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 天前603

全部回覆(1)我來回復

  • P粉148434742

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

    最後,我使用兩步驟驗證。 參考:https://www.youtube.com/watch?v= mte7LroYd74&list=LL&index=1&t=2s

    回覆
    0
  • 取消回覆