无法使用Oauth Google向PHPMailer 6.0发送电子邮件

时间:2017-08-04 06:46:08

标签: php oauth-2.0 phpmailer google-oauth2

使用Google Oauth

0,我收到此错误

2017-08-04 06:38:42 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP v19sm895098pgc.93 - gsmtp
2017-08-04 06:38:42 CLIENT -> SERVER: EHLO localhost
2017-08-04 06:38:43 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [180.243.143.147]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
2017-08-04 06:38:43 CLIENT ->; SERVER: STARTTLS
2017-08-04 06:38:43 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
2017-08-04 06:38:43 CLIENT -> SERVER: EHLO localhost
2017-08-04 06:38:43 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [180.243.143.147]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
SMTP Error: Could not authenticate.
2017-08-04 06:38:43 CLIENT -> SERVER: QUIT
2017-08-04 06:38:43 SERVER -> CLIENT: 221 2.0.0 closing connection v19sm895098pgc.93 - gsmtp
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Message could not be sent.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

我的剧本

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require './vendor/autoload.php';

$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';

$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->AuthType = 'XOAUTH2';

$mail->oauthUserEmail = "info@modelunitednation.org";
$mail->oauthClientId = "932857915584-eco8v9aejdb2n3mkltgvftf8e5h1eiko.apps.googleusercontent.com";
$mail->oauthClientSecret = "7SqFo7aPYvZ05cHlh5p3kMUD";
$mail->oauthRefreshToken = "1/4KJJ5XMyXqELMAhRXGYjz_I4SfoWfFR9N9RRA2VA2I0";

$mail->addAddress('jakabanasuy2@gmail.com');     // Add a recipient
$mail->isHTML(true);                               // Set email format to HTML
$mail->setFrom('from@example.com', 'Mailer');
$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

我不知道,我已经完成搜索谷歌但我没有找到任何解决方案。在我问Can't Send PHPMailer with Oauth Google之前

我案子的任何解决方案?

3 个答案:

答案 0 :(得分:0)

对于XOAUTH2 AuthType,如果您使用的是5.2 version,则表示您正在实例化错误的类The 6.0也有所不同。

您应该使用:

$mail = new PHPMailerOAuth;

这就是出现以下错误的原因:

  

2017-08-04 06:38:43 SERVER - &gt;客户:250-smtp.gmail.com在你的   服务,[180 ...... XOAUTH2 ......    SMTP错误:无法进行身份验证。

干杯!

答案 1 :(得分:0)

一些事情:

首先,无论如何,OAuth真的很难调试。我真的建议您查看6.0 branch,其中OAuth支持得到了显着改进。它附带了更好的示例,如果您可以帮助测试它将非常有用。第二步是关键点,可能会解决您的问题。启动(使用PHPMailerOAuth类)略有不同,因此请仔细阅读文档。

其次,浏览this文档,您可能已经关注它,但看看您是否遗漏了任何步骤。

第三,你确定你有刷新令牌而不是普通令牌吗?

尝试这些事情并让我知道,如果它对您有用吗?

答案 2 :(得分:-2)