2017-01-05 2 views
2

다음과 같은 이상한 상황이 있습니다.gmail과 함께 PHPMailer XOAUTH2 - SMTP를 인증 할 수 없습니다.

gmail과 xoauth2를 사용하여 phpMailer를 사용하려고하는데 "AUTH 요청"명령을 보낸 직후에 "SMTP 오류 : 인증 할 수 없습니다"라는 응답이 나타납니다.

OAuth2를 리그 1.4.1 (모든 작곡가 통해로드) PHP 버전으로, phpmailer 5.2.21을 사용 : 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); 

입니다 그리고 디버그 출력은 다음과 같다 :

Google 앱은 Gmail은 ( https://mail.google.com)와 settin의 전 과정을 사용할 권한이
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 

g 위로 애플 리케이션과 새로 고침 토큰을 받고 성공적입니다. 더욱이, 필자는 운좋게도 phpmailer 문제 해결 가이드 전체를 보았습니다.

나는 여기에서 명백한 무엇인가를 놓치고 있을지 모르지만, 어떤 생각입니까? 사전

답변

0

그래, 간단한 뭔가 감사합니다 - 잘못된 클래스 : PHPMailer와 함께 제공되는 gmail_xoauth.phps 예에서

$mail = new PHPMailerOAuth; 

봐. OAuth 지원은 PHPMailer 6.0에서 크게 향상 될 것입니다.

+0

감사합니다. 절약 된 하루 –