2015-06-07 244 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它已經很容易,因爲它是獲得刷新令牌,他們不會爲每個網站添加此功能。 –