Oauth 2.0 PHPMailer SMTP Gmail身份验证错误
我正在使用PHPMailer 5.2.10发送电子邮件,下一个代码是:Oauth 2.0 PHPMailer SMTP Gmail身份验证错误,oauth-2.0,smtp,gmail,phpmailer,Oauth 2.0,Smtp,Gmail,Phpmailer,我正在使用PHPMailer 5.2.10发送电子邮件,下一个代码是: function SendGmail($to,$subj,$body) { $mail = new PHPMailer(); // create a new object $mail->IsSMTP(); // enable SMTP $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
function SendGmail($to,$subj,$body)
{
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // "ssl" secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // 465 or 587
$mail->IsHTML(true);
$mail->Username = "admin@mydomain.ru";
$mail->Password = "********";
$mail->SetFrom("admin@mydomain.ru");
$mail->Subject = $subj;
$mail->Body = $body;
$mail->AddAddress($to);
return $mail->Send();
}
注意:我们使用谷歌应用程序,因此邮件域不是Google.com,而是其他一些,比如mydomain.ru
一切正常,直到谷歌最近实施了另一项“安全增强”(AFAIK强制OAuth2授权)。现在,PHPMailer->Send()返回以下文本:
2015-05-12 06:49:15 CLIENT -> SERVER: EHLO 127.0.0.1
2015-05-12 06:49:15 CLIENT -> SERVER: AUTH LOGIN
2015-05-12 06:49:15 CLIENT -> SERVER: [some base64 string]
2015-05-12 06:49:15 CLIENT -> SERVER: [some base64 string]
2015-05-12 06:49:16 SMTP ERROR: Password command failed: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 u10sm3566045lbb.30 - gsmtp
2015-05-12 06:49:16 SMTP Error: Could not authenticate.
2015-05-12 06:49:16 CLIENT -> SERVER: QUIT
2015-05-12 06:49:16 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting bool(false) Done!
好的,我转到并执行以下操作:
- 通过web界面登录到此帐户-一切正常
- 在浏览器中打开此链接:-谷歌表示一切正常
- 打开此链接:然后打开此链接:我看到以下内容:
非常感谢。感谢您阅读文档,非常感谢!问题是,正如你所经历的那样,谷歌在不考虑其用户的情况下强加了这种复杂的身份验证机制。这并不能提高安全性,因为最终您仍然需要通过SSL提交用户名和密码才能获得令牌。OAuth是一个授权(你能做什么)协议,但google间接地将其用作身份验证(你是谁)协议 没有人实现它的原因是,虽然它非常聪明,但OAuth通常令人不快,令人困惑,这就是为什么如果有人来实现它,我们会非常高兴 非常有帮助,可能构成PHPMailer实现的基础。尽管这增加了对ZF2的依赖性,但对于任何其他OAuth实现,如我链接到或的PHPClasses中的实现,原则都是相同的 对不起,在这件事上我帮不了什么忙
更新:PHPMailer现在支持gmail的OAuth。描述了如何使用它,是的,它仍然是相当不愉快的 哎呀,那是我的错误,我一直在错误的地方编辑代码,而不是在执行代码的地方 奇怪的是,尽管有OAuth2和其他谷歌的惊喜,我没有改变任何东西来让旧代码工作(只是更新密码) 我怎么才能避免这个该死的OAuth2,像我那样发送电子邮件呢 在此“安全增强”之前(针对谷歌应用程序帐户) 你不能。与普通谷歌不同,谷歌应用程序“不太安全”。一旦您的帐户被标记为额外的安全性,您必须切换到OAuth2 如何轻松地将上述OAuth2类集成到PHPMailer中 你不能。像雷鸟队一样,有一些相当强大的队伍。在国际海事组织,OAuth2是电子邮件的一大改进 是否有其他易于使用的PHP解决方案来发送电子邮件 使用gmail
对。我自己的SMTP项目的解决方案是从PHP Mailer切换到。Zend_Mail已经有了本地OAuth2支持很长一段时间了。感谢您的回答和链接,但由于PHP技能较低,我不会独自处理这些问题。关于OAuth2,我的感觉完全一样:它并没有提高安全性,但给开发人员和用户带来了很多麻烦。。。