65

我在一个简单的脚本中使用 PHPMailer 通过 Gmail 发送电子邮件,我得到一个“未知错误”(至少对我来说!):

SMTP 错误:无法验证。错误:SMTP 错误:无法验证。

SMTP 服务器错误:5.7.1 不接受用户名和密码。如需了解详情,请访问 535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 p38sm2467302ybk.16

我已经阅读了为 SSL/TLS 连接配置 OpenSSL,并且我做到了。Apache 和 PHP 配置正确(OpenSSL 扩展在 PHP 中运行,mod_ssl 在 Apache 2.2.16 中运行)。

这是 PHP 脚本:

 <?php
  require_once ("PHPMailer\class.phpmailer.php");
  $Correo = new PHPMailer();
  $Correo->IsSMTP();
  $Correo->SMTPAuth = true;
  $Correo->SMTPSecure = "tls";
  $Correo->Host = "smtp.gmail.com";
  $Correo->Port = 587;
  $Correo->UserName = "foo@gmail.com";
  $Correo->Password = "gmailpassword";
  $Correo->SetFrom('foo@gmail.com','De Yo');
  $Correo->FromName = "From";
  $Correo->AddAddress("bar@hotmail.com");
  $Correo->Subject = "Prueba con PHPMailer";
  $Correo->Body = "<H3>Bienvenido! Esto Funciona!</H3>";
  $Correo->IsHTML (true);
  if (!$Correo->Send())
  {
    echo "Error: $Correo->ErrorInfo";
  }
  else
  {
    echo "Message Sent!";
  }
?>

用户名和密码都可以,我在 Thunderbird 中尝试过,没有任何问题。我还使用了 SSL 身份验证和端口 465,得到了同样的错误。

4

18 回答 18

78

我遇到了这个问题。为了让它工作,我必须去myaccount.google.com ->“登录和安全”->“具有帐户访问权限的应用程序”,然后将“允许不太安全的应用程序”设置为“开启”(靠近底部这页纸)。

或者,您可以按照此直接链接访问这些设置

在此处输入图像描述

于 2015-09-04T14:56:22.593 回答
36

这是GMail问题

阅读此 Google 帮助 ( https://support.google.com/mail/answer/14257?p=client_login&rd=1 )

  1. 打开您的网络浏览器并通过http://mail.google.com/mail登录到 Gmail 。如果您看到文字验证请求,请输入扭曲图片中的字母并完成登录。
  2. 关闭您的浏览器并再次尝试在您的电子邮件客户端中访问您的消息。
  3. 如果您仍然遇到问题,请访问http://www.google.com/accounts/DisplayUnlockCaptcha并使用您的 Gmail 用户名和密码登录。如有必要,输入扭曲图片中的字母。
  4. 单击继续。
  5. 重新启动您的邮件客户端并再次尝试访问您的电子邮件客户端中的消息。

SMTP 错误:无法验证

Gmail 问题

于 2013-04-30T11:33:01.503 回答
27

试试这个:

$Correo->用户名 = "foo@gmail.com";

我对其进行了测试,并且它可以完美地工作而没有其他变化

于 2010-10-16T17:19:30.640 回答
10

我收到了同样的错误,在我的情况下是密码。我的密码特殊字符

如果您提供密码而不转义特殊字符,则错误将持续存在。

例如$mail->Password = " por$ch3";有效,但不能使用上面的代码。

解决方案应该如下:$mail->Password = "por\$ch3";

请注意我在密码中美元字符之前放置的反斜杠。如果您有使用特殊字符的密码,那应该可以

于 2012-08-01T09:57:15.120 回答
6

WP-Mail-SMTP在 Wordpress 中配置插件时,我遇到了同样的错误。

即使我对设置和登录凭据进行了“三次检查”,并且能够使用浏览器手动登录,问题仍然存在。

您可以采取一系列步骤来解决此问题。

  1. 为您要使用的 Gmail 帐户创建新密码
  2. 在Google 安全设置中启用安全性较低的应用
  3. 使用该Display Unlock Captcha页面授予您的应用或网站登录 Gmail 的权限。单击Continue或按照说明进行操作。
  4. 使用应用程序或网站登录。对我有用的 smtp 设置是1) SMTP 主机:smtp.gmail.com 2) SMTP 端口:587 3) 加密:TLS 4) 身份验证:SMTP 身份验证 5) 用户名​​:example@gmail.com 6) 密码:examplesecret
于 2017-07-20T08:24:42.393 回答
6

我的解决方案是:

  1. 更改gmail密码
  2. 在 gmail 上“管理您的 google 帐户”>“安全”>“打开 3rd 方应用访问权限”
  3. 这是我通过 UnlockingCaptcha 发现的新步骤,在此站点中告知,确切的站点是https://accounts.google.com/b/0/DisplayUnlockCaptcha,但也许您想先阅读以前的站点。

就这些,希望对你有用

于 2020-07-15T15:37:24.123 回答
4

由于密码中的百分号,我收到此错误。

于 2011-12-05T13:22:11.057 回答
3

对我来说,我的密码字段中有一个特殊字符,我把它写成 $mail->Password = " por$ch3" ,它适用于 gmail smpt 服务器,但不适用于其他服务器;所以我只是将双引号更改为单引号,它对我有用。$mail->密码 = 'por$ch3';

于 2013-06-11T12:17:40.437 回答
3

如果您在发送电子邮件时仍然遇到错误,则显示相同的错误消息。尝试这个:

$mail->SMTPSecure = 'tls';
$mail->Host = 'smtp.gmail.com';

就在该行之前:

$send = $mail->Send();

或者在其他意义上,在调用 Send() 函数之前。

测试和工作。

于 2014-06-11T19:30:15.473 回答
2
  1. 首先去https://myaccount.google.com
  2. 选择安全选项卡
  3. 向下滚动并选择“不太安全的应用访问”
  4. 开启访问

这将解决我在 PHPMailer 错误中的“SMTP 错误:无法验证”。

于 2020-04-29T13:07:11.683 回答
2

另一篇文章正确地解决了该问题,但没有说明如果两步验证已打开,该怎么做。那时不允许使用安全性较低的应用程序的选项不可用。这是如何做到这一点的答案:

a. Go to the URL of `https://myaccount.google.com/` and click `Sing-in and security`

b. Click on the app password. 

在此处输入图像描述

You will reach a page like this,

在此处输入图像描述

c. Create name of your app and generate a password for the respective app.  

d. Use that password acquired here inside the app.

这应该可以解决问题。

于 2018-05-20T10:16:38.380 回答
2

我遇到了同样的问题,并且没有运气完成所有提示,包括 Gmail 设置(例如不太安全的应用程序访问)。但是最后当我将密码更改为不同的密码时,由于某种原因它起作用了!仅供参考,初始密码没有任何特殊字符。

于 2016-05-24T22:57:59.190 回答
1

我有同样的问题,没有运气就做了所有的提示。最后,当我将密码更改为不同的密码时,由于某种原因它起作用了!(初始密码或新密码没有任何特殊字符)

于 2019-08-18T14:06:32.147 回答
0

我在身份验证方面遇到了同样的问题。解决方法是设置两步验证并为设备创建应用程序专用密码(如果您的问题与我的问题相同,则阻止设备的错误消息将出现在您的帐户设置中 - >“通知和警报”)

于 2015-01-29T21:35:11.983 回答
0

这是selinux问题。我刚刚更新了 /etc/selinux/config 文件中的以下给定部分 SELINUX=permissive (之前是 SELINUX=enforcing)。然后通过重新启动重新启动系统现在邮件没有任何麻烦。配置

From Email Address : [noreply@yourdomain.com]
From Name : [your domain name]
SMTP Host   : smtp.gmail.com
Type of Encryption : SSL
SMTP Port : 465
SMTP Authentication  : YES
Username : [your mail id]
Password : [your password]
于 2016-02-10T07:17:57.930 回答
0

SMTP 错误:无法验证 我有同样的问题。以下故障排除步骤帮助了我。

  • 我在我的 gmail 帐户中关闭了双因素身份验证。
  • 我允许不太安全的应用程序访问我的 gmail 帐户。为了让它工作,我必须去myaccount.google.com-> Sign-in & security-> Apps with account access,然后转向Allow less secure appsON靠近页面底部)。
  • 在这一步,当我尝试注册用户时,我会得到同样的错误。谷歌会向我发送一条警告消息,提示有人知道我的密码并且登录被阻止。
  • 然后,Gmail 将为您提供选项。您可以单击活动是否属于您。单击活动属于您的选项。
  • 再次尝试注册。它现在应该可以工作了。
于 2017-12-14T11:47:27.090 回答
0

您的代码没有问题。

按照以下两个简单步骤从 phpmailer 发送电子邮件。

  • 如果您已启用,则必须禁用谷歌帐户的两步验证设置。

  • 打开允许访问不太安全的应用程序。

于 2018-04-12T07:24:54.320 回答
0

我有同样的问题,按照以下说明修复

测试为您尝试访问的帐户启用“访问不太安全的应用程序”(这只是意味着客户端/应用程序不使用 OAuth 2.0 - https://oauth.net/2/ )。它位于安全选项卡上的帐户设置中,帐户权限(不适用于启用两步验证的帐户): https ://support.google.com/accounts/answer/6010255?hl=en

答案的原始链接:https: //support.google.com/mail/thread/5621336?msgid=6292199

于 2019-12-25T14:58:53.490 回答