Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP致命错误:';Swift#U运输例外';带有消息';无法在SMTP服务器上进行身份验证_Php_Smtp_Gmail_Swiftmailer - Fatal编程技术网

PHP致命错误:';Swift#U运输例外';带有消息';无法在SMTP服务器上进行身份验证

PHP致命错误:';Swift#U运输例外';带有消息';无法在SMTP服务器上进行身份验证,php,smtp,gmail,swiftmailer,Php,Smtp,Gmail,Swiftmailer,我知道以前有人问过这个问题,我也读过所有的帖子,但我仍然找不到解决这个问题的办法 我有一台安装了wamp的windows计算机。当我尝试通过谷歌的SMTP服务器发送一封简单的电子邮件时,一切正常。但是,当我将同一个脚本复制到Ubuntu 12机器时,它会给我一个错误: PHP Fatal error: Uncaught exception 'Swift_TransportException' with message 'Failed to authenticate on SMTP server

我知道以前有人问过这个问题,我也读过所有的帖子,但我仍然找不到解决这个问题的办法

我有一台安装了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上通过telnet连接到smtp.gmail.com,效果很好,所以这一定不是防火墙问题

我已经用PHP启用了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);
?>


谢谢

欢迎来到SO。这与其说是一个答案,不如说是一个冗长的评论。很高兴看到您发布了错误消息:

PHP致命错误:未捕获异常“Swift_TransportException”,消息“无法使用用户名在SMTP服务器上进行身份验证”xxx@gmail.comm“在/home/TestMail/SwiftMail/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:171中使用2个可能的验证器”

其中一部分是实际信息:

无法在用户名为“”的SMTP服务器上进行身份验证xxx@gmail.comm“使用2个可能的验证器

我得说这是你的打字错误:

xxx@gmail.comm
             ^
可能发生。请验证您使用的登录凭据是否正确。此外,即使你们在网站上发现类似的问题,也不意味着它们涵盖了你们的问题


希望这会有所帮助,否则请尝试提供更多错误信息,例如,是否有swiftmailer的日志?您是否仔细检查了凭据和服务器配置?防火墙在做什么?等等。

您还可以检查是否未启用两步验证身份验证。我就是这样。

这是一个旧线程,但对于同一个错误,我的分辨率有点不同。结果证明我的Swift配置很好。来自我服务器的IP被谷歌屏蔽为可疑。我可以通过访问这个链接,然后从服务器上执行我的邮件程序代码来清除它


似乎微不足道,但您在prod机器中提供了正确的登录凭据吗?可能这不是谷歌的问题,因为您说Windows可以正常工作。是的,这一定是我的linux服务器或网络配置中的问题,但我没有意识到这是什么…感谢hakre的回复,但不幸的是,这并不是根本原因。我尝试了数百万种不同的方法,只是复制/粘贴了错误的错误消息。我的凭据是正确的,错误仍然相同:/Hmm,听起来像是调试工作。试着获得一个概述,并计划如何逐点解决您的问题,以解决问题。Swiftmailer应该为您提供一些调试日志,请使用它们。这可能是一个网络问题。除了防火墙设置之外,还有什么网络问题?有什么想法吗?好的,让我们一步一步地解决这个问题:看起来Swiftmailer试图进行身份验证,但无法。因此,很可能已经建立了网络连接。google mail提供哪种身份验证?您通过Swiftmailer使用哪两种身份验证?另外:你说你已经验证了你的证书,你是怎么做到的。你写了你已经阅读了所有的帖子。这样的纸条只不过是在说你正在尝试的东西。你看过这篇文章吗?您如何设置用户名和密码?您的代码仅显示您使用的服务器名和端口。似乎在如何编写用户名方面存在差异,请参见:欢迎使用堆栈溢出!虽然这可以从理论上回答这个问题,但请在这里包括答案的基本部分,并提供链接供参考。@John,你的解决方案对我有效。我一直在寻找那个链接,但没能找到。@John,太棒了!它解决了我无法解决的问题!只要点击那个链接。究竟是什么?清理ip地址?我是否从服务器打开链接?怎么样?有命令吗?@Rohan,已经很久了;所以,我不再记得了。然而,我知道我的代码是在一台无头AWS linux服务器上运行的,所以我不相信我会从服务器上点击它。我相信这就像在任何机器上从浏览器访问链接一样简单,同时登录到你的谷歌帐户。