我正在使用 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。