2017-08-03 42 views
0

我有一些問題。 我的代碼不能用Oauth發送PHPMailer Google

<?php 
require 'PHPMailer/PHPMailerAutoload.php'; 
$userEmail = "[email protected]"; 
$clientId = "xxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com"; 
$clientSecret = "xxxxxxxx-xxxxxxxxx"; 
$token = "1/xxxxxxxx-xxxxxxxx-5EmWcSmuvnRbJs"; 

$mailer = new PHPMailerOAuth; 
$mailer->isSMTP(); 
$mailer->Host = 'smtp.gmail.com'; 
$mailer->SMTPAuth = true; 
$mailer->AuthType = 'XOAUTH2'; 
$mailer->oauthUserEmail = $userEmail; 
$mailer->oauthClientId = $clientId; 
$mailer->oauthClientSecret = $clientSecret; 
$mailer->oauthRefreshToken = $token; 
$mailer->SMTPSecure = 'tls'; 
$mailer->Port = 587; 

$mailer->setFrom("[email protected]"); 
$mailer->addAddress("[email protected]"); 

$mailer->Subject = "Subject"; 
$mailer->Body = "Message"; 

if (! $mailer->send()) 
    throw new RuntimeException('Mail submission failed! ' . $mailer->ErrorInfo); 

這eror

Fatal error: Uncaught Error: Class 'League\OAuth2\Client\Provider\Google' not found in /opt/lampp/htdocs/mailer/PHPMailer/class.phpmaileroauthgoogle.php:54 Stack trace: #0 /opt/lampp/htdocs/mailer/PHPMailer/class.phpmaileroauthgoogle.php(67): PHPMailerOAuthGoogle->getProvider() #1 /opt/lampp/htdocs/mailer/PHPMailer/class.phpmaileroauthgoogle.php(74): PHPMailerOAuthGoogle->getToken() #2 /opt/lampp/htdocs/mailer/PHPMailer/class.smtp.php(470): PHPMailerOAuthGoogle->getOauth64() #3 /opt/lampp/htdocs/mailer/PHPMailer/class.phpmaileroauth.php(174): SMTP->authenticate('', '', 'XOAUTH2', '', '', Object(PHPMailerOAuthGoogle)) #4 /opt/lampp/htdocs/mailer/PHPMailer/class.phpmailer.php(1540): PHPMailerOAuth->smtpConnect(Array) #5 /opt/lampp/htdocs/mailer/PHPMailer/class.phpmailer.php(1335): PHPMailer->smtpSend('Date: Thu, 3 Au...', 'Message\n') #6 /opt/lampp/htdocs/mailer/PHPMailer/class.phpmailer.php(1213): PHPMailer->postSend() #7 /opt/lampp/htdocs/mailer/index.php(27): PHPMailer->send() #8 {main} thrown in /opt/lampp/htdocs/mailer/PHPMailer/class.phpmaileroauthgoogle.php on line 54 

我不知道我的錯誤,我只是想創建使用PHPMailer的谷歌與SMTP郵件的OAuth2.0,我搜索對谷歌但我還沒有找到解決辦法

+0

你運行'composer install'嗎?另外,你的'require'../ vendor/autoload.php''在哪裏?除非你有一個框架爲你處理,否則必須包含這個框架。 – Trojan404

+0

是的,我做了運行作曲家安裝 –

回答

0

PHPMailer's composer.json file - 它包括的OAuth類作爲建議,因爲它不是必需的,而且不會老版本PHP工作對PHPMailer的支承實ts,所以默認情況下不能啓用。

您需要將其添加到您自己的composer.json文件(與加載PHPMailer的文件相同)。

我已將此效果的評論添加到Gmail OAuth2 tutorial on the PHPMailer wiki

雖然我在這裏,但我建議您不要使用PHPMailer 5.2來實現此功能,而是直接使用PHPMailer 6.0,這對OAuth2有更好的支持。

+0

okeey我會試試這個 –

+0

海我有問題再次在我的問題在https://stackoverflow.com/questions/45499897/cant-send-email-phpmailer-6-0-with- oauth-google @Synchro –