5

我正在尝试创建一个处理贝宝付款的测试站点。我正在尝试在成功付款后使用 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 工作?

4

4 回答 4

18

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

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

更新:2015

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

于 2013-12-18T11:22:52.137 回答
5

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

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

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

于 2015-01-10T23:59:37.147 回答
3

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

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

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

于 2015-01-28T18:21:45.447 回答
0

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

这适用于托管在 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‎</a> 并解锁您的帐户,以便通过其他媒体/网站进行访问。

第 1 步:(重要!!)只要确保当您访问此链接时

https://accounts.google.com/UnlockCaptcha‎</a>

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

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

于 2020-11-25T13:01:55.780 回答