PHPMailer XOAUTH2 с gMail - SMTP Не удалось подтвердить подлинность

Я застрял в следующей странной ситуации.

Пытаясь использовать phpMailer с gMail и xoauth2, и в то время как соединение успешно, сразу после отправки команды "запрос AUTH", я получаю ответ "Ошибка SMTP: Не удалось проверить подлинность".

Использование phpmailer 5.2.21 с oauth2 лигой 1.4.1 (все загружаются через композитор) Версия PHP: 7.0.1 (загружен openssl)

Конфигурация следующая

$mailer = new PHPMailer();
$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);
$mailer->addAddress($recipient);

$mailer->Subject = $subject;
$mailer->Body = $message;

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

И вывод отладки следующий:

2017-01-05 08:14:47 Connection: opening to smtp.gmail.com:587, timeout=300, options=array ()
2017-01-05 08:14:47 Connection: opened
2017-01-05 08:14:47 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP e7sm325303lfb.10 - gsmtp
2017-01-05 08:14:47 CLIENT -> SERVER: EHLO survey.kaimakinn.gr
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
2017-01-05 08:14:47 CLIENT -> SERVER: STARTTLS
2017-01-05 08:14:47 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
2017-01-05 08:14:47 CLIENT -> SERVER: EHLO survey.kaimakinn.gr
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
2017-01-05 08:14:47 Auth method requested: XOAUTH2
2017-01-05 08:14:47 Auth methods available on the server: LOGIN,PLAIN,XOAUTH2,PLAIN-CLIENTTOKEN,OAUTHBEARER,XOAUTH
2017-01-05 08:14:47 SMTP Error: Could not authenticate.
2017-01-05 08:14:47 CLIENT -> SERVER: QUIT

Приложение Google имеет право использовать gmail ( https://mail.google.com/), и весь процесс настройки приложения и получения маркера обновления прошел успешно. Более того, я безуспешно просмотрел руководство по устранению неполадок phpmailer.

Я, наверное, здесь упускаю что-то очевидное, но есть идеи? заранее спасибо

1 ответ

Решение

Да, что-то простое - неправильный класс:

$mail = new PHPMailerOAuth;

Посмотрите на gmail_xoauth.phps Пример предоставлен PHPMailer. Обратите внимание, что поддержка OAuth будет существенно улучшена в PHPMailer 6.0.

Другие вопросы по тегам