我想用oauth身份验证发送带有gmail SMTP的电子邮件。
在这个留档:https://github.com/swiftmailer/swiftmailer/blob/b11f0054d96fa49200d10401e34d879e46c2a2c6/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php
我可以找到以下示例代码:
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')
->setAuthMode('XOAUTH2')
->setUsername('YOUR_EMAIL_ADDRESS')
->setPassword('YOUR_ACCESS_TOKEN');
太好了是工作。但它只工作1小时,因为访问令牌在此期间后过期。我找不到任何方法来更新访问令牌?如何将刷新令牌传递给swftmailer?
setPassword应该从它被更新的地方得到令牌,所以你需要做一个函数,返回这个令牌从任何地方它是不断更新的,一个Web服务在谷歌api的情况下,按照这些链接将帮助:
Google OAuth 2.0刷新令牌用于具有公共访问权限的Web应用程序
https://developers.google.com/accounts/docs/OAuth2WebServer#offline