我关注使用 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 可以吗?如何自动化该过程?
最后,我使用两步验证。 参考:https://www.youtube.com/watch?v= mte7LroYd74&list=LL&index=1&t=2s