当我尝试使用 PHP SMTP 电子邮件服务器发送电子邮件时,发生了以下错误。
SMTP Error: Could not authenticate. Message could not be sent.
Run Code Online (Sandbox Code Playgroud)
邮件程序错误:SMTP 错误:无法进行身份验证。
以下是我使用过的代码。
function supervisorMail(){
global $error;
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = "***@gmail.com";
$mail->Password = "****";
$mail->SetFrom("***@gmail.com", "Employee Leave Management System");
$userID=$_SESSION['userID'];
$select_query = mysql_query("SELECT * FROM employee WHERE emp_id = '$userID'");
$select_sql = mysql_fetch_array($select_query);
$name=$select_sql['manager_name'];
var_dump($name);
$select_query1 = mysql_query("SELECT email FROM employee WHERE emp_id='$name'");
$select_sql1 = mysql_fetch_array($select_query1);
$email=$select_sql1['email'];
var_dump($email);
$mail->Subject = "subject ";
$mail->Body = "something.";
$mail_to = $email;
$mail->AddAddress($mail_to);
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
Run Code Online (Sandbox Code Playgroud)
}
我该如何修复这个错误。
错误消息非常清楚“无法验证”。我会说您正确使用了 PHPMailer 类,但只是没有填写正确的 gmail 帐户详细信息。
我想在你的问题中,用户名和密码字段看起来像
$mail->Username = "@gmail.com";
$mail->Password = "";
Run Code Online (Sandbox Code Playgroud)
仅仅因为您显然不想分享它们,我建议在问题中像这样呈现它们
$mail->Username = "********@gmail.com";
$mail->Password = "********";
Run Code Online (Sandbox Code Playgroud)
因此,如果您使用正确的用户名和密码,还有其他两件事需要检查
也许您的设置“访问不太安全的应用程序”已关闭。 从网络登录后,您可以从此页面打开它 https://www.google.com/settings/u/0/security/lesssecureapps
如果启用,则您的 Gmail 帐户可能启用了两步验证。如果是这种情况,您需要创建应用程序专用密码。
按照此链接获取有关如何操作的分步指南 http://email.about.com/od/gmailtips/fl/How-to-Get-a-Password-to-Access-Gmail-By-POP-或-IMAP.htm