PHPMailer中的“SMTP错误:无法进行身份验证”

时间:2010-10-16 16:57:07

标签: php phpmailer

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

  

SMTP错误:无法进行身份验证。   错误:SMTP错误:无法   认证

     

SMTP服务器错误:5.7.1用户名和   密码不被接受。了解更多信息   535 5.7.1   http://mail.google.com/support/bin/answer.py?answer=14257   p38sm2467302ybk.16

我读过有关配置OpenSSL For SSL / TLS Connections的内容,我做到了。 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,获得了相同的错误。

18 个答案:

答案 0 :(得分:61)

我遇到了这个问题。为了让它工作,我不得不去myaccount.google.com - &gt; &#34;登录&amp;安全&#34; - &GT; &#34;具有帐户访问权限的应用&#34;,并转过&#34;允许安全性较低的应用&#34;到&#34; ON&#34; (靠近页面底部)。

enter image description here

答案 1 :(得分:24)

请改为尝试:

$ Correo-&gt; 用户名 =“foo@gmail.com”;

我测试了它并且它完美运行而没有其他变化

答案 2 :(得分:21)

  

这是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. 重新启动邮件客户端,然后再次尝试访问电子邮件客户端中的邮件。
  6. SMTP Error: Could not authenticate

    Gmail issue

答案 3 :(得分:7)

我收到了同样的错误,在我的情况下,它是密码。我的密码有特殊字符,如果您提供密码而不转义特殊字符,则错误将继续显示。 E.g $mail->Password = " por$ch3";有效,但无法使用上述代码。解决方案应如下所示:$mail->Password = "por\$ch3";注意我在密码中放置美元字符之前的反斜杠。如果你有一个使用特殊字符的密码

,这应该有效

答案 4 :(得分:3)

我收到此错误是因为密码中有百分号。

答案 5 :(得分:3)

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

答案 6 :(得分:2)

我的解决方法是:

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

那一切,希望对您有用

答案 7 :(得分:2)

  1. 首先转到https://myaccount.google.com
  2. 选择“安全性”标签
  3. 向下滚动并选择“较少安全的应用访问权限”
  4. 打开访问权限

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

答案 8 :(得分:2)

[解决]。在Wordpress中配置WP-Mail-SMTP插件时遇到了同样的错误。

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

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

  1. 为您要使用的Gmail帐户创建新密码
  2. https://coderwall.com/p/ohjerg/read-large-text-files-in-nodejs
  3. 中启用安全性较低的应用
  4. 使用Google Security settings授予您的应用或网站登录Gmail的权限。点击Continue或按照说明操作。
  5. 使用应用或网站登录。适合我的smtp设置是 1)SMTP主机:smtp.gmail.com 2)SMTP端口:587 3)加密:TLS 4)身份验证:SMTP身份验证5)用户名:example@gmail.com 6)密码:examplesecret

答案 9 :(得分:2)

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

答案 10 :(得分:2)

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

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

就在行前:

$send = $mail->Send();

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

经过测试和工作。

答案 11 :(得分:0)

这是selinux的问题。我刚刚更新了/ etc / selinux / config文件中的以下给定部分 FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); // suppose your formula is in B3 CellReference cellReference = new CellReference("B3"); Row row = sheet.getRow(cellReference.getRow()); Cell cell = row.getCell(cellReference.getCol()); CellValue cellValue = evaluator.evaluate(cell); switch (cellValue.getCellType()) { case Cell.CELL_TYPE_BOOLEAN: System.out.println(cellValue.getBooleanValue()); break; case Cell.CELL_TYPE_NUMERIC: System.out.println(cellValue.getNumberValue()); break; case Cell.CELL_TYPE_STRING: System.out.println(cellValue.getStringValue()); break; case Cell.CELL_TYPE_BLANK: break; case Cell.CELL_TYPE_ERROR: break; // CELL_TYPE_FORMULA will never happen case Cell.CELL_TYPE_FORMULA: break; } (之前是SELINUX =强制执行)。 然后通过给予重新启动系统 重启 现在邮件没有任何麻烦。 构造

SELINUX=permissive

答案 12 :(得分:0)

SMTP错误:无法进行身份验证 我有同样的问题。以下故障排除步骤对我有所帮助。

  • 我在我的Gmail帐户中关闭了双因素身份验证。
  • 我允许安全性较低的应用访问我的Gmail帐户。为了让它工作,我不得不去myaccount.google.com - &gt; Sign-in & security - &gt; Apps with account access,然后将Allow less secure apps转到ON(靠近页面底部)。
  • 在此步骤中,当我尝试注册用户时,我会收到同样的错误。 Google会向我发送一条警告消息,告知有人有我的密码并且登录被阻止。
  • Gmail会为您提供选项。您可以单击该活动是否属于您自己。单击活动属于您的选项。
  • 再次尝试注册。现在应该可以了。

答案 13 :(得分:0)

您的代码没有问题。

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

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

  •   
  • 启用开启允许访问不太安全的应用。

  •   

答案 14 :(得分:0)

另一篇文章解决问题是正确的,但如果启用了两步验证则无法解决该问题。然后,不提供允许安全性较低的应用程序的选项。以下是如何做到的答案:

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

b. Click on the app password. 

enter image description here

You will reach a page like this,

enter image description here

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

d. Use that password acquired here inside the app.

这应解决问题。

答案 15 :(得分:0)

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

答案 16 :(得分: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

答案 17 :(得分:0)

我在身份验证方面遇到了同样的问题。修复方法是设置两步验证并为设备创建应用程序专用密码(阻止设备的错误消息将显示在您的帐户设置中 - &gt;“通知和警告”如果您的问题与我的相同)< / p>