簡體   English   中英

PHPMailer 使用 Office 365 失敗 SMTP

[英]PHPMailer fails using Office 365 SMTP

我正在使用此代碼,我已經將其與 Linux 服務器一起用於郵件很長時間了,但最近已移至 Office 365 並更新了憑據。

我還添加了$email->SMTPSecure = ''; 對於 365。

$email = new PHPMailer();
$email->SMTPDebug = 2;
$email->IsSMTP();
$email->SMTPAuth = true;
$email->IsHTML(true);
$email->Host = '';
$email->Port = 587;
$email->Username = '';
$email->Password = '';

但我收到一個錯誤

SMTP -> FROM SERVER:220 LO2P265CA0058.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sun, 3 Oct 2021 12:18:59 +0000
SMTP -> FROM SERVER: 250-LO2P265CA0058.outlook.office365.com Hello [***] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 SMTPUTF8
SMTP -> ERROR: AUTH not accepted from server: 504 5.7.4 Unrecognized authentication type [LO2P265CA0058.GBRP265.PROD.OUTLOOK.COM]
SMTP -> FROM SERVER:221 2.0.0 Service closing transmission channel
SMTP Connect() failed.

我用這個工具來測試設置,它工作正常https://www.gmass.co/smtp-test

這看起來您使用的是舊版本的 PHPMailer,因此請升級. 您的調試 output 不包括客戶端流量,因此我們看不到您的客戶在說什么,但是,我可以猜到。 出於某種原因,您禁用了加密,如您所見,服務器未在此初始未加密的 state 中列出其功能中的身份驗證:

250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8

通常 PHPMailer 會發現服務器提供 STARTTLS 並會自動啟用加密,我不明白為什么你的代碼不能使用它,除非你使用的是非常非常舊的版本。

所以,升級,然后添加這一行:

$mail->SMTPSecure = 'tls';

在 STARTTLS 之后,客戶端將發出一個新的 EHLO 命令,您將看到一組新的功能,其中包括 AUTH,因此您能夠進行身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM