【问题标题】:PHPMailer Error: Message could not be sent. Mailer Error: SMTP Error: Could not authenticatePHPMailer 错误:无法发送消息。邮件程序错误:SMTP 错误:无法验证
【发布时间】:2020-10-27 17:54:54
【问题描述】:

我正在使用 PHPMailer 发送电子邮件,并且我的代码在我的个人 gmail 帐户上运行良好,但是,当我将个人电子邮件切换到我的域电子邮件时,它无法正常工作。

我的域电子邮件由 G suit 托管。我已启用两步验证并为两封电子邮件设置应用密码。

以下是我的代码:

  $mail->SMTPDebug = 2;                               
  $mail->isSMTP();                                            
  $mail->Host       = 'smtp.gmail.com';                   
  $mail->SMTPAuth   = true;                                   
  $mail->Username   = 'xxxe@gmail.com'; //personal email                    
  $mail->Password   = 'xxx-personal-app-password'; //personal app passwrod                           
  $mail->SMTPSecure = 'tls';
  $mail->Port       = 587;  

这适用于我的个人 gmail 帐户。

使用我的域电子邮件,我只将用户名和密码更改为域电子邮件和域 gmail 应用程序密码,但它不起作用。

$mail->Username   = 'xxx@domain.com';//domain email                   
$mail->Password   = 'xxx-domain-app-password'; //domain app password

显示错误信息:

无法发送消息。邮件程序错误:SMTP 错误:无法验证。

只有当我登录 G suit 管理控制台并将“允许用户管理他们对不太安全的应用程序的访问”设置为“开启”而不是选择“禁用访问或允许用户管理他们的访问”时它才有效。这是因为我的应用密码错误还是 Google 认为我的应用不安全?如果我的应用程序不安全,为什么使用我的个人电子邮件,它可以工作?

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 如果您在 Google 上搜索“使用 php 发送 gmail”之类的内容,您会收到很多关于这个确切问题的帖子/文章,这些帖子/文章将详细解释它。
  • 问题不是我的应用程序无法使用 php 发送 gmail,问题是它适用于我的个人 gmail 帐户,但不适用于我由 G suit 托管的域电子邮件。我的代码在我的个人 gmail 上运行良好。

标签: php email gmail phpmailer google-workspace


【解决方案1】:

只有当我登录 G suit 管理控制台并将“允许不太安全的应用程序”设置为“开启”时它才有效

这就是它的工作原理。

我曾经遇到过类似的问题。 ..

所以不要这样:

$mail->SMTPSecure = 'tls';
$mail->Port = 587;

试试这个:

$mail->SMTPSecure = 'ssl'; 
$mail->Port = 465;

希望这会有所帮助!

【讨论】:

  • 我不想开启允许不太安全的应用程序。
  • @Moon - 然后使用他们的 API 代替您使用 OAuth 对自己进行身份验证/授权。不过,您可能还需要在他们这边注册一个应用程序。你真的没有那么多选择。 Google 让他们的帐户越来越安全。
  • 不是 gmail 让帐户更安全,而是让帐户更难使用,同时保持大致相同的安全性。
【解决方案2】:

使用 gmail,如果您不想打开“不太安全的应用程序”(这实际上并没有降低安全性,但这是一个单独的主题),唯一的选择是使用 XOAUTH2 身份验证。这被 P​​HPMailer 的examplesdocumentationthe troubleshooting guide 所涵盖,从错误消息链接到那里。这里要转发的内容太多了。

请注意,这与使用 Google 的 API不同。使用 XOAUTH2,您仍然可以使用常规 SMTP。但请注意,与所有 OAuth 实现一样,它的设置非常不愉快,非常脆弱,而且反馈机制不佳意味着您可能很难确定它是否停止工作。

【讨论】:

  • 为什么在我的个人 gmail 电子邮件中,我没有打开“不太安全的应用程序”并且它运行良好,但对我的域电子邮件不利?
  • 当我在我的个人 gmail 上选中不太安全的应用程序访问权限时,它显示“此设置不适用于启用两步验证的帐户。此类帐户需要应用程序专用密码才能访问安全性较低的应用程序.",但G套装的设置不同。
  • Google 在执行要求方面不一致(官方立场是他们仍在过渡),但 gmail 和 gsuite 有许多不同之处,这将是其中之一。特定于应用程序的密码应该可以正常工作。
  • 否,应用密码适用于个人 gmail,但不适用于域电子邮件。我不知道为什么...
  • 您最好查看谷歌的文档以了解为什么会这样以及他们的规则到底是什么,而不是在这里询问。
猜你喜欢
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
  • 2016-01-16
  • 2016-08-14
  • 2011-04-26
  • 2017-08-19
相关资源
最近更新 更多