&引用;SMTP错误:无法验证";在PHPMailer中

&引用;SMTP错误:无法验证";在PHPMailer中,php,phpmailer,Php,Phpmailer,我在一个简单的脚本中使用PHPMailer通过Gmail发送电子邮件,我得到了一个“未知错误”(至少对我来说是这样!): SMTP错误:无法进行身份验证。 错误:SMTP错误:无法 验证 SMTP服务器错误:5.7.1用户名和密码 密码不被接受。了解更多信息,请访问 535 5.7.1 p38sm2467302ybk.16 我已经读过关于为SSL/TLS连接配置OpenSSL的内容,并且我做到了。Apache和PHP已正确配置(OpenSSL扩展在PHP中运行,mod_ssl在Apache 2.

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

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

SMTP服务器错误:5.7.1用户名和密码 密码不被接受。了解更多信息,请访问 535 5.7.1 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,得到了相同的错误

试试这个:

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


我测试了它,它工作得很好,没有任何其他更改

我收到了这个错误,因为密码中有百分号。

我收到了相同的错误,在我的情况下是密码。“我的密码”有特殊字符,如果您提供的密码没有转义特殊字符,则错误将继续显示。例如
$mail->Password=“por$ch3”有效,但使用上面的代码将不起作用。解决方案如下:
$mail->Password=“por\$ch3”注意我在密码中美元字符前的反斜杠。如果你有一个使用特殊字符的密码,这应该是可行的

这是GMail的问题

阅读此谷歌帮助()

  • 打开您的web浏览器并登录到Gmail。如果您看到word验证请求,请在扭曲的图片中键入字母并完成登录
  • 关闭浏览器,然后再次尝试访问电子邮件客户端中的邮件
  • 如果您仍然有问题,请访问并使用您的Gmail用户名和密码登录。如有必要,请在扭曲的图片中输入字母
  • 单击“继续”
  • 重新启动邮件客户端,然后再次尝试访问电子邮件客户端中的邮件

  • 对我来说,我的密码字段中有一个特殊字符,我把它放在$mail->password=“por$ch3”中,它适用于gmail smpt服务器,但不适用于其他服务器;所以我把双引号改成了单引号,这对我很有用$邮件->密码='por$ch3'

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

    $mail->SMTPSecure = 'tls';
    $mail->Host = 'smtp.gmail.com';
    
    就在排队前:

    $send = $mail->Send();
    
    或者在调用Send()函数之前


    测试和工作。

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

    我遇到了此问题。为了让它工作,我必须进入->“登录和安全”->“具有帐户访问权限的应用程序”,然后将“允许不太安全的应用程序”打开(靠近页面底部)

    或者,您也可以按照此操作


    这是selinux发行的。我刚刚在/etc/selinux/config文件中更新了下面给定的部分
    SELINUX=permissive
    (之前是SELINUX=强制执行)。 然后只需重新启动系统,给出 重新启动 现在邮件可以顺利地发送了。 配置

    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]
    

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

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

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

    这里有一个修复此问题的步骤列表

  • 为要使用的Gmail帐户创建新密码
  • 在中启用不太安全的应用程序
  • 使用授予您的应用程序或网站登录Gmail的权限。单击
    继续
    或按照说明操作
  • 使用应用程序或网站登录。适用于我的smtp设置是1)smtp主机:smtp.gmail.com 2)smtp端口:587 3)加密:TLS 4)身份验证:smtp身份验证5)用户名:example@gmail.com6)密码:examplesecret

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

    • 我在我的gmail帐户中关闭了双因素身份验证
    • 我允许不太安全的应用程序访问我的gmail帐户。为了让它正常工作,我必须进入
      myaccount.google.com
      ->
      登录和安全
      ->
      具有帐户访问权限的应用程序
      ,然后将
      允许不太安全的应用程序
      转到
      上(靠近页面底部)
    • 在这一步,当我试图注册一个用户时,我会得到同样的错误。谷歌会向我发送一条警告消息,说有人拥有我的密码,登录被阻止
    • Gmail将为你提供选择。您可以单击该活动是否属于您。单击该活动属于您的选项
    • 请再次尝试注册。现在应该可以了

      • 您的代码没有问题

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

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

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


        另一篇文章正确地解决了这个问题,但没有说明如果启用了两步验证,如何解决这个问题。允许不太安全的应用程序的选项当时不可用。以下是如何做到这一点的答案:

        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.