2015-06-07 182 views
1

我想用oauth认证发送带有Gmail SMTP的电子邮件。SwiftMailer gmail oauth刷新访问令牌

在此文档: 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小时,因为访问令牌在这段时间后过期。我没有找到任何方式获得访问令牌的续订?我们如何将刷新令牌传递给swiftmailer?

+0

PHPMailer的使用刷新令牌,而不是 –

回答

2

setPassword应该从更新的地方获取令牌,因此您需要创建一个函数,该函数从不断更新的任何地方返回该令牌,在谷歌API的情况下,如果遵循这些链接将提供帮助:

Google OAuth 2.0 refresh token for web application with public access

https://developers.google.com/accounts/docs/OAuth2WebServer#offline

+0

好吧,我认为OAuth的问题是由swiftmailer管理.... –

+0

他们给protocole能够使用它,但他们不能让它为每个亲vider(谷歌,雅虎等..)大量的网站使用oauth它已经很容易,因为它是获得刷新令牌,他们不会为每个网站添加此功能。 –