Моя цель - отправлять электронные письма от учетной записи gmail аутентифицированного пользователя через gmail API. Для этого я использую PHPMailer. Проблема в том, что я получаю ошибку SMTP Error: Could not authenticate.
непосредственно перед попыткой отправить электронное письмо.
Вот что я сделал до сих пор с Google API PHP Client :
- Настройка веб-приложения на консоли Google и получение клиента и
секрет токен
- Успешный вход в систему пользователя с помощью его собственных учетных данных Google и
обменен токен доступа на код авторизации . также получил
обновить токен.
- Библиотеки, которые я установил:
- "google / apiclient": "^ 2.0",
- "phpmailer / phpmailer": "~ 6.0",
- "Лига / oauth2-клиент": "^ 2.0",
- "league / oauth2-google": "^ 3.0",
- "paragonie / random_compat": "^ 1 | ^ 2 | ^ 9.99"
Это мой код:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\OAuth;
use League\OAuth2\Client\Provider\Google;
.
.
.
.
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.gmail.com';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->AuthType = 'XOAUTH2';
$email = 'mygoogleconsolemailaddress@gmail.com;
$clientId = 'randomcharactershere346346346.apps.googleusercontent.com';
$clientSecret = 'thatsmysecretactually------';
$mail->Body = $this->renderView('MailingBundle:Mail:email_account_verification.html.twig',
array(
'senderName' => 'userwantingtosendmail@gmail.com'
)
);
$provider = new Google(
[
'clientId' => $clientId,
'clientSecret' => $clientSecret
]
);
$mail->setOAuth(
new OAuth(
[
'provider' => $provider,
'clientId' => $clientId,
'clientSecret' => $clientSecret,
'refreshToken' => $refreshToken, //i get that from another method and yes i can successfully get it
'userName' => $email,
]
)
);
$mail->setFrom('senderemail@gmail.com', 'Some name here');
$mail->addAddress('tohere@gmail.com', 'Some name here');
$mail->Subject = "Subject here"
$mail->CharSet = 'utf-8';
$mail->send();
Я прочитал следующие документы, но не могу решить мою проблему:
https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2
https://github.com/PHPMailer/PHPMailer/blob/v6.0.1/examples/gmail_xoauth.phps
Заранее спасибо.