簡體   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