SMTPError:密码命令在PHPMailer中失败

SMTPError:密码命令在PHPMailer中失败,php,smtp,phpmailer,Php,Smtp,Phpmailer,要求是在提交表格时,必须将邮件发送到指定的电子邮件地址。为此,我使用PHPMailer。 当我第一次从localhost运行代码时,我收到了Gmail中收到的严重安全警报,我通过打开“允许不太安全的应用”和 检查并批准了安全事件。现在,该代码在由xampp提供支持的本地主机中运行良好,但在共享主机中却无法运行。当我点击共享主机中的表单页面中的提交按钮时,我收到以下消息: 2020-02-25 09:48:40 SERVER -> CLIENT: 220 smtp.gmail.com

要求是在提交表格时,必须将邮件发送到指定的电子邮件地址。为此,我使用PHPMailer。

当我第一次从localhost运行代码时,我收到了Gmail中收到的严重安全警报,我通过打开“允许不太安全的应用”和 检查并批准了安全事件。

现在,该代码在由xampp提供支持的本地主机中运行良好,但在共享主机中却无法运行。当我点击共享主机中的表单页面中的提交按钮时,我收到以下消息:

2020-02-25 09:48:40 SERVER -&gt; CLIENT: 220 smtp.gmail.com ESMTP t131sm5033428oih.35 - gsmtp<br>
2020-02-25 09:48:40 CLIENT -&gt; SERVER: EHLO www.domain_name.com<br>
2020-02-25 09:48:40 SERVER -&gt; CLIENT: 250-smtp.gmail.com at your service, [AAA.BB.CCC.DD]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8<br>
2020-02-25 09:48:40 CLIENT -&gt; SERVER: STARTTLS<br>
2020-02-25 09:48:40 SERVER -&gt; CLIENT: 220 2.0.0 Ready to start TLS<br>
2020-02-25 09:48:44 CLIENT -&gt; SERVER: EHLO www.domain_name.com<br>
2020-02-25 09:48:44 SERVER -&gt; CLIENT: 250-smtp.gmail.com at your service, [AAA.BB.CCC.DD]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8<br>
2020-02-25 09:48:44 CLIENT -&gt; SERVER: AUTH LOGIN<br>
2020-02-25 09:48:44 SERVER -&gt; CLIENT: 334 VXNlcm5hbWU6<br>
2020-02-25 09:48:44 CLIENT -&gt; SERVER: [credentials hidden]<br>
2020-02-25 09:48:44 SERVER -&gt; CLIENT: 334 UGFzc3dvcmQ6<br>
2020-02-25 09:48:44 CLIENT -&gt; SERVER: [credentials hidden]<br>
2020-02-25 09:48:45 SERVER -&gt; CLIENT: 534-5.7.14 &lt;https://accounts.google.com/signin/continue?sarp=1&amp;scc=1&amp;plt=AKgnsbv534-5.7.14 ymrjiXdYur3ddtR_6o2GrGNO2DfOQ7VhdphcGz7dq3__0gTNj1-oIXqZ__3KYGCWXt-ZC534-5.7.14 znNW-khosAGrPwCN1mDscVVYa5ms25Ann9jrAUU39WELRqwVrSmhOMGa91Ec4JRu&gt;534-5.7.14 Please log in via your web browser and then try again.534-5.7.14  Learn more at534 5.7.14  https://support.google.com/mail/answer/78754 t131sm5033428oih.35 - gsmtp<br>
2020-02-25 09:48:45 SMTP ERROR: Password command failed: 534-5.7.14 &lt;https://accounts.google.com/signin/continue?sarp=1&amp;scc=1&amp;plt=AKgnsbv534-5.7.14 ymrjiXdYur3ddtR_6o2GrGNO2DfOQ7VhdphcGz7dq3__0gTNj1-oIXqZ__3KYGCWXt-ZC534-5.7.14 znNW-khosAGrPwCN1mDscVVYa5ms25Ann9jrAUU39WELRqwVrSmhOMGa91Ec4JRu&gt;534-5.7.14 Please log in via your web browser and then try again.534-5.7.14  Learn more at534 5.7.14  https://support.google.com/mail/answer/78754 t131sm5033428oih.35 - gsmtp<br>
SMTP Error: Could not authenticate.<br>
2020-02-25 09:48:45 CLIENT -&gt; SERVER: QUIT<br>
2020-02-25 09:48:45 SERVER -&gt; CLIENT: 221 2.0.0 closing connection t131sm5033428oih.35 - gsmtp<br>
SMTP Error: Could not authenticate.<br>

已采取以下措施:

  • 用户名和密码组合正确且未过期。 通过web登录并从服务器发送邮件进行手动验证 本地主机

  • 无法设置$mail->SMTPAuth=false,因为大多数 为安全起见,许多共享主机提供商似乎已禁用此功能 原因(主要是为了避免垃圾邮件和发送未经请求的电子邮件)


  • 仅供他人参考!要解决此问题,您必须转到:

    然后单击允许不太安全的应用为是

    不安全的应用程序意味着什么?我们是否可以更改常见问题解答说明和/或实施,以便用户不需要执行此额外步骤

    如果不可能,我们至少应该在FAQ中记录用户还需要更改其google安全帐户的设置

    您的解决方案:

    您的服务器不支持phpmailer

    您的帐户被视为垃圾邮件,请阅读以下内容:

    使用或修复应用程序密码

    如果您已启用两步验证,并试图通过设备、移动应用程序或桌面应用程序登录到您的Google帐户,则需要输入应用程序密码

    请参阅此处的更多信息并遵循以下步骤:

    如果您正在使用SMTP(即,您正在调用
    isSMTP()
    ),则可以使用
    SMTPDebug
    属性获取SMTP会话的详细记录。设置如下:

    如果通过SMTP服务器连接或发送电子邮件时遇到问题,SMTP类可以提供有关发生的处理/错误的详细信息

    使用类的调试功能查看连接中发生了什么。为此,请在脚本中设置调试级别

    允许错误级别,例如:

    $mail->SMTPDebug = SMTP::DEBUG_SERVER;
    $mail->SMTPDebug = 4; //from 1 to 4 to get more details.
    
    我有几乎相同的错误,这段代码解决了我的问题,因为我的自签名证书

    $mail->SMTPOptions = array(
        'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
        )
    );
    
    再次看到


    看起来您正试图通过curlapi或其他
    SERVER:EHLO
    连接,如果是这样的话!请将您的代码添加到问题中。

    仅供其他人参考!要解决此问题,您必须转到:

    然后单击允许不太安全的应用为是

    不安全的应用程序意味着什么?我们是否可以更改常见问题解答说明和/或实施,以便用户不需要执行此额外步骤

    如果不可能,我们至少应该在FAQ中记录用户还需要更改其google安全帐户的设置

    您的解决方案:

    您的服务器不支持phpmailer

    您的帐户被视为垃圾邮件,请阅读以下内容:

    使用或修复应用程序密码

    如果您已启用两步验证,并试图通过设备、移动应用程序或桌面应用程序登录到您的Google帐户,则需要输入应用程序密码

    请参阅此处的更多信息并遵循以下步骤:

    如果您正在使用SMTP(即,您正在调用
    isSMTP()
    ),则可以使用
    SMTPDebug
    属性获取SMTP会话的详细记录。设置如下:

    如果通过SMTP服务器连接或发送电子邮件时遇到问题,SMTP类可以提供有关发生的处理/错误的详细信息

    使用类的调试功能查看连接中发生了什么。为此,请在脚本中设置调试级别

    允许错误级别,例如:

    $mail->SMTPDebug = SMTP::DEBUG_SERVER;
    $mail->SMTPDebug = 4; //from 1 to 4 to get more details.
    
    我有几乎相同的错误,这段代码解决了我的问题,因为我的自签名证书

    $mail->SMTPOptions = array(
        'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
        )
    );
    
    再次看到


    看起来您正试图通过curlapi或其他
    SERVER:EHLO
    连接,如果是这样的话!请在问题中添加您的代码。

    好吧,经过一场漫长的战斗,我终于设法解决了这个问题。我从以下URL激活了DisplayUnlockCaptcha:


    可能是因为Gmail可能将从托管服务器中的PHP文件接收到的登录信息视为不受信任的请求。这是因为托管服务器可能位于不同的地方或国家,收到的登录身份验证请求与Gmail帐户经常登录的请求不同。因此,作为一种安全措施,它会在后台使用一些验证码机制(无法查看)

    好吧,经过一场漫长的战斗,我设法解决了这个问题。我从以下URL激活了DisplayUnlockCaptcha:


    可能是因为Gmail可能将从托管服务器中的PHP文件接收到的登录信息视为不受信任的请求。这是因为托管服务器可能位于不同的地方或国家,收到的登录身份验证请求与Gmail帐户经常登录的请求不同。因此,作为一种安全措施,它将在后台使用某些验证码机制(无法查看)

    如果“允许不太安全的应用”处于启用状态,您的Gmail帐户中可能启用了两步验证。如果是这种情况,您需要创建特定于应用程序的密码@ShashankShah感谢您的响应:)在这种情况下,不设置双因素身份验证。简而言之,身份验证基于用户名和密码。如果它在那里,我甚至无法从localhost(poss)发送邮件