PHP fatal error : 'Swift_TransportException' with message 'Failed to authenticate on SMTP server

标签 php smtp gmail swiftmailer

我知道之前有人问过这个问题,我已经阅读了那里的所有帖子,但我仍然找不到解决方案。

我有一台安装了 wamp 的 Windows 机器。当我尝试通过谷歌的 SMTP 服务器发送一封简单的电子邮件时,一切正常。但是,当我将相同的脚本复制到 Ubuntu 12 机器时,它给了我这个错误:

PHP Fatal error:  Uncaught exception 'Swift_TransportException' with message 'Failed to authenticate on SMTP server with username "xxx@gmail.com" using 2 possible authenticators' in /home/TestMail/SwiftMail/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:171
Stack trace:
/home/TestMail/SwiftMail/lib/classes/Swift/Transport/EsmtpTransport.php(289): Swift_Transport_Esmtp_AuthHandler->afterEhlo(Object(Swift_SmtpTransport))
/home/TestMail/SwiftMail/lib/classes/Swift/Transport/AbstractSmtpTransport.php(114): Swift_Transport_EsmtpTransport->_doHeloCommand()
/home/TestMail/SwiftMail/lib/classes/Swift/Mailer.php(76): Swift_Transport_AbstractSmtpTransport->start()
/home/TestMail/testmail.php(73): Swift_Mailer->send(Object(Swift_Message))
thrown in /home/TestMail/SwiftMail/lib/classes/Swift/Transport/Esmtp/AuthHandler.php on line 171

这就是我初始化传输的方式:

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')

我已经尝试在端口 465 上远程登录到 smtp.gmail.com 并且它工作正常,所以它一定不是防火墙问题。

我在 PHP 中启用了 SSL。我尝试使用不同的邮件服务器发送两封带 SSL 和不带 SSL 的单独邮件,一切都很顺利。只有谷歌的邮件让我生气。

欢迎提出任何想法。

我的整个 php 代码:

<?php
require_once 'SwiftMail/lib/swift_required.php';
// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
  ->setUsername('xxx@gmail.com')
  ->setPassword('xxx');

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

$htmlbody = 'some html here';

// Create a message
$message = Swift_Message::newInstance('without head')
    ->setFrom(array('<from email>' => '<some sender>'))
    ->setTo(array('<to email>' => '<some recepient>'))
    ->setBody($htmlbody, 'text/html');

// Send the message
$result = $mailer->send($message);

var_dump($result);
?>

谢谢!

最佳答案

这是一个旧线程,但对于相同的错误,我的解决方案有点不同。结果证明我的 Swift 配置没问题。来 self 的服务器的 IP 被谷歌认为是可疑的。我可以通过访问此链接清除它,然后从服务器执行我的邮件程序代码。

http://www.google.com/accounts/DisplayUnlockCaptcha

关于PHP fatal error : 'Swift_TransportException' with message 'Failed to authenticate on SMTP server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12663783/

相关文章:

gmail - Basecamp 如何将 "View on Basecamp"链接添加到 Gmail?

php - Xdebug 在 Mac m1 上安装失败

javascript - Smtp 连接设置错误?!地球上的 Servage.net 是如何工作的 D_; ...会让我生气 :D

security - 将 PHPmailer 设为 Gmail 的 "more secure app"

php - Laravel 5.2 邮件发送中的 Swift_TransportException

ios - 使用 Firebase 应用程序打开 url 选项的 GoogleSignIn 未调用

php - 拉维尔 5 : Ajax Post 500 (Internal Server Error)

php离开页面后继续执行

php - 带有数据库下拉菜单的侧边栏

c# - 如何将电子邮件发送到带有破折号的地址?