使用 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 共享服务器。知道为什么会发生这种情况吗?

谢谢!

***2012 年 2 月 6 日更新
我做了一些测试。结果:

我在 IIS 服务器中测试了该脚本,它运行良好。该错误似乎只发生在 Linux 服务器上。

另外,如果我使用 gmail 邮件服务器,它在 IIS 和 Linux 上都可以正常运行。

这可能是我的 Linux 服务器配置的问题吗?

***更新 2
我尝试了 swiftmail,它工作正常 :-) 所以我放弃了 PHPMailer

答案1

我不确定问题出在服务器还是 PHPMailer 上,但我尝试了 Swiftmail,它运行良好。我通常想知道为什么某些东西无法正常工作,但我找不到问题所在,技术服务也和我一样迷茫。所以从现在起,我将在我的项目中坚持使用 Swiftmail。

谢谢您的帮助!

答案2

您可以尝试像这样请求 TLS 连接:

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

这个问题/答案有更多信息。包括建议使用 php PEAR 库而不是 phpmailer。

相关内容