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

时间:2020-07-07 12:58:29

标签: php email gmail phpmailer google-workspace

我正在使用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认为我的应用不安全?如果我的应用程序不安全,为什么使用我的个人电子邮件仍可以正常工作?

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

2 个答案:

答案 0 :(得分:1)

并且仅当我登录到G Suit管理控制台并将“允许安全程度较低的应用”设置为“开”时,它才有效

这就是它的工作方式。

我曾经有过类似的问题。 ..

所以代替这个:

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

尝试以下方法:

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

希望这会有所帮助!

答案 1 :(得分:0)

使用gmail,如果您不想打开“安全性较低的应用程序”(安全性实际上并没有降低,但这是一个单独的主题),唯一的选择是使用XOAUTH2身份验证。错误消息链接到PHPMailer的examplesdocumentationthe troubleshooting guide会将其发送给您。这里有太多要重新发布的内容。

请注意,这与使用Google的API 相同。使用XOAUTH2,您仍然可以使用常规SMTP。但是请注意,与所有OAuth实现一样,它非常令人讨厌,设置也很脆弱,而且反馈机制差,这使您可能很难找出它是否停止工作。