繁体   English   中英

PHP Swift 邮件程序:无法使用 2 个可能的身份验证器在 SMTP 上进行身份验证

[英]PHP Swift mailer: Failed to authenticate on SMTP using 2 possible authenticators

当我将带有 PHP Swift 邮件程序的电子邮件发送到此服务器时: smtp.exchange.example.com 像这样:

// Load transport
$this->transport =
    Swift_SmtpTransport::newInstance(
       self::$config->hostname,
       self::$config->port
    )
    ->setUsername(self::$config->username)
    ->setPassword(self::$config->password)
    ;

// Load mailer
$this->mailer = Swift_Mailer::newInstance($this->transport);

// Initialize message
$this->message = Swift_Message::newInstance();

// From
$this->message->setFrom(self::$config->from);

// Set message etc. ...

// Send
$this->mailer->send($this->message);

我收到一个奇怪的错误:

无法使用 2 个可能的身份验证器使用用户名“user@example.com”在 SMTP 服务器上进行身份验证

我确信登录信息是正确的。

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

转到https://accounts.google.com/UnlockCaptcha和解锁您的帐户,通过其他媒体/站点的访问。

更新:2015

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

更新:2021

谷歌 URL 现在已更改为: https://myaccount.google.com/lesssecureapps 您将被要求重新登录

我遇到了同样的问题,所以我在 WHM 根登录时禁用了一项设置,如下所示:

WHM > 主页 > 服务器配置 > 调整设置 > 将传出 SMTP 限制为 root、exim 和邮递员(FKA SMTP 调整)[?]

我真的有同样的问题,最后,我解决了它。

它可能不是 Swift Mail 的问题。 这是 Yaml 解析器的问题。 如果您的密码只有数字,那么发送到 swift 的密码最终不会相同。

swiftmailer:
    transport:  smtp
    encryption: ssl
    auth_mode:  login
    host:       smtp.gmail.com
    username:   your_username
    password:   61548921

你需要用双引号密码修复它:“61548921”

我刚刚收到同样的错误。

奇怪的是,评论了凭证行

// ->setUsername(self::$config->username)
// ->setPassword(self::$config->password)

而问题就消失了。

我很困惑,因为邮件服务器肯定需要这些凭据。

我尝试了这里提到的几乎所有可能的建议,但对我来说,在我的 Google 帐户安全设置选项卡中将“访问不太安全的应用程序”更改为启用后,问题得到了解决。 希望这可能对其他人有用!

服务器可能需要某种加密和安全身份验证。
http://swiftmailer.org/docs/sending.html#encrypted-smtp

尝试将用户名放在双引号“用户名”中,不知何故对我来说是固定的。

您可能使用了错误的用户名。

我有一个类似的错误。 确保您在登录服务器时没有使用大写字母。

示例:JacekPL@lala.pl

如果您使用->setUsername('JacekPL') ,这可能会导致错误。 使用->setUsername('jacekpl')代替。 这解决了我的问题。

我得到了同样的错误。

我使用 gmail 帐户和 Google 的 SMTP 服务器发送电子邮件。 问题是由于 SMTP 服务器拒绝授权,因为它认为我的网络主机(我通过它发送电子邮件)是入侵者。

我按照 Google 的流程将我的网络主机识别为通过我的帐户发送电子邮件的有效实体,问题解决了。

我遇到了同样的问题并解决了它。 首先尝试手动登录您的 Gmail 帐户。 这个问题是由于谷歌检测到您的 gmail 帐户被滥用。 例如,在短时间内发送大量电子邮件。

首先检查是否有任何连接问题,您可以访问 SMTP 服务器:

在终端类型中:

telnet servername portnumber 

如果您收到 220 响应,您可以访问 SMTP 服务器并且没有连接问题,但如果与服务器的连接失败,请查看您的网络出了什么问题。

如果服务器需要身份验证,请尝试通过用户名和密码在服务器上进行身份验证,看看是否有问题。

最后看看服务器是否需要加密,如果是,openssl 和其他东西配置正确。

如果您尝试从本地环境发送邮件,例如。 XAMPP 或 WAMP,每次都会发生此错误,请继续尝试在您的网络托管或任何用于生产的代码上使用相同的代码。

此外,来自谷歌的两步身份验证可能是问题所在。

奇怪的是,发送电子邮件再次起作用。 我们没有改变任何东西,主人说他们也没有改变。 我们认为服务器会重新启动左右。 很奇怪:S

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM