【问题标题】:PHP SwiftMailer Failed to authenticate on SMTP serverPHP SwiftMailer 无法在 SMTP 服务器上进行身份验证
【发布时间】:2013-10-08 16:53:35
【问题描述】:

我正在尝试创建一个处理贝宝付款的测试站点。我正在尝试在成功付款后使用 PHP SwiftMailer 向用户发送电子邮件(这是我的 IPN)。

这是我的运输代码:

        $transport = Swift_SmtpTransport::newInstance('smtp.googlemail.com', 465, 'ssl')
          ->setUsername('xxx@xxx.co.uk')
          ->setPassword('xxxx');    

    $mailer = Swift_Mailer::newInstance($transport);

我尝试使用 googlemail 和另一封托管在共享服务器下的电子邮件,但两者都出现了错误提示。

不幸的是,我遇到了这个常见的错误:

  Fatal error: Uncaught exception 'Swift_TransportException' with message 'Failed to authenticate on SMTP server with username "xxx@xxx.co.uk" using 2 possible authenticators' in /home/xxx/public_html/paypal/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:184 

  Stack trace: 

  #0 /home/xxx/public_html/paypal/lib/classes/Swift/Transport/EsmtpTransport.php(312): Swift_Transport_Esmtp_AuthHandler->afterEhlo(Object(Swift_SmtpTransport)) 

  #1 /home/xxx/public_html/paypal/lib/classes/Swift/Transport/AbstractSmtpTransport.php(120): Swift_Transport_EsmtpTransport->_doHeloCommand() 

  #2 /home/xxx/public_html/paypal/lib/classes/Swift/Mailer.php(80): Swift_Transport_AbstractSmtpTransport->start() 

  #3 /home/xxx/public_html/paypal/ipn.php(113): Swift_Mailer->send(Object(Swift_Message)) 

  #4 /home/mctikudo/public_html/paypal/ipn.php(46): sendMail(Resource id #3, Array) 

  #5 {main} thrown in /home/xxx/public_html/paypal/lib/classes/Swift/Transport/Esmtp/AuthHandler.php on line 184

我已经做了一些研究并尝试了几种方法来设置我的交通工具。但似乎仍然没有任何效果。直到我试图将我的 IPN 代码放到另一家托管公司下的另一台服务器上,但令人惊讶的是,它确实有效。与另一个相同的代码。

这就是为什么我猜测其他服务器中的某些东西必须设置或其他东西。

我需要确保在我的服务器上启用这些功能才能让 SwiftMailer 正常工作吗?

【问题讨论】:

标签: php email sendmail swiftmailer


【解决方案1】:

这可能是旧的,但有人可能会通过这个获得帮助。我也遇到了同样的问题,并在我的 gmail 帐户上收到了一封邮件,说明有人试图通过电子邮件客户端或其他网站入侵您的帐户。 然后我搜索并发现执行以下操作可以解决此问题。

转到https://accounts.google.com/UnlockCaptcha‎ 并解锁您的帐户以通过其他媒体/网站访问。

更新:2015 年

另外,你可以试试这个,去https://myaccount.google.com/security#connectedapps 在底部,向右有一个选项“允许不太安全的应用程序”。如果是“OFF”,滑动按钮将其打开。

【讨论】:

    【解决方案2】:

    如前所述,这可能已经过时,但您可以尝试允许 gmail 通过不太安全的应用程序发送邮件。

    https://www.google.com/settings/security/lesssecureapps

    这使它对我有用,我也遇到了同样的问题。

    【讨论】:

      【解决方案3】:

      我知道这已经过时了,但希望这可以为某人指明正确的方向。在使用 Mandrill 和 Swiftmailer 组合时,我遇到了同样的问题。

      我的问题是服务器正在停止来自端口 587 的 SMTP 消息,这与我服务器上的 FKA SMTP Tweak 设置有关。

      因此,如果您有 Cpanel 并且可以访问 WHM,请尝试在调整项下查看您的邮件设置,以查看传出 SMTP 邮件是否受到限制。另一种选择是您的服务器可能认为某个端口是可疑的。尝试更改端口,我发现我的托管公司有一个合适的端口列表。

      【讨论】:

      • 我花了一整天的时间才弄明白。启用此功能(FKA SMTP Tweak)时,会将传出的 SMTP 连接重定向到本地邮件服务器。仍然允许 root、exim 和 mailman 进行直接连接。
      • 改变了这个,但还没有帮助。
      【解决方案4】:

      我知道我太晚了,但我对这个错误感到沮丧,感谢所有这些答案,我修复了它,我希望这会有所帮助。

      这适用于托管在 AWS Elastic BeansTalk 上的网站。 将此添加到您的 email.php 或其他任何内容中

      require_once 'files-needed/vendor/autoload.php';
      //to send emails to our users
      //google does not recognize this so we must change google settings
      //(Allow less secure apps) Turned on
      // Create the Transport
      $transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
          ->setUsername(EMAIL)
          ->setPassword(PASSWORD);
      
      // Create the Mailer using your created Transport
      $mailer = new Swift_Mailer($transport);
      

      感谢roneo,我做到了

      转到https://accounts.google.com/UnlockCaptcha‎ 并解锁您的帐户,以便通过其他媒体/网站访问。

      第 1 步:(重要!!)请确保在您访问此链接时,

      https://accounts.google.com/UnlockCaptcha‎

      您是通过 php 代码从同一电子邮件登录的,因为我以为我是,但当我输入 https://accounts.google.com/ 时发现它是另一封电子邮件。

      第 2 步: 我按照页面上的说明进行操作,然后立即访问我的网站并发送了一封电子邮件,最后……它成功了!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-07
        • 2020-06-11
        • 2019-03-11
        • 1970-01-01
        • 2021-06-11
        相关资源
        最近更新 更多