![使用 PHPMailer 的 SMTP 身份验证错误](https://linux22.com/image/1316716/%E4%BD%BF%E7%94%A8%20PHPMailer%20%E7%9A%84%20SMTP%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E9%94%99%E8%AF%AF.png)
我正在使用 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。