使用 PHPMailer 的 SMTP 驗證錯誤

使用 PHPMailer 的 SMTP 驗證錯誤

我正在使用 PHPMailer 將基本表單傳送到電子郵件地址,但出現以下錯誤:

SMTP 錯誤:無法進行身份驗證。訊息無法發送。郵件程式錯誤:SMTP 錯誤:無法進行身份驗證。 SMTP 伺服器錯誤:VXNlcm5hbWU6

奇怪的是,如果我嘗試再次發送,它就可以了!每次我在第一個錯誤之後提交表單時,它都會起作用。但是,如果我將其保留幾分鐘然後重試,我會再次遇到相同的錯誤。

使用者名稱和密碼必須正確,因為有時它可以正常工作。我什至創建了以下(非常基本的)腳本只是為了測試它,我得到了相同的結果

<?php

require("phpmailer/class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();
$mail->Host = "smtp.host.com";
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "password";

$mail->From = "[email protected]";
$mail->FromName = "From Name";
$mail->AddAddress("[email protected]");
$mail->AddReplyTo("[email protected]");

$mail->IsHTML(true);  

$mail->Subject = "Here is the subject";
$mail->Body    = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";

if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message has been sent";

?>

我不認為這是相關的,但我只是將我的主機更改為 Linux 共享伺服器。知道為什麼會發生這種情況嗎?

謝謝!

***更新於 02/06/2012
我一直在做一些測試。結果:

我在 IIS 伺服器中測試了該腳本,效果很好。該錯誤似乎只發生在 Linux 伺服器中。

另外,如果我使用 gmail 郵件伺服器,它在 IIS 和 Linux 中都可以正常運作。

難道是我的Linux伺服器的設定有問題?

***更新 2
我嘗試了 swiftmail,它工作正常:-) 所以我要拋棄 PHPMailer

答案1

我不確定問題是伺服器還是 PHPMailer,但我嘗試了 Swiftmail,效果很好。我通常想知道為什麼有些東西不起作用,但我找不到問題所在,技術服務也像我一樣迷失了。所以從現在開始我的專案將堅持使用 Swiftmail。

謝謝您的幫忙!

答案2

您可以嘗試像這樣請求 TLS 連線:

$mail->SMTPAuth   = true;
$mail->SMTPSecure = "tls";

這個問題/答案有更多資訊。包括建議使用 php PEAR 庫而不是 phpmailer。

相關內容