SMTP 错误:无法验证。无法发送消息。邮件程序错误:SMTP 错误:无法进行身份验证

Cha*_*ika 0 php email

当我尝试使用 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)

}

我该如何修复这个错误。

Igo*_* Om 5

错误消息非常清楚“无法验证”。我会说您正确使用了 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)

因此,如果您使用正确的用户名和密码,还有其他两件事需要检查

  1. 也许您的设置“访问不太安全的应用程序”已关闭。 从网络登录后,您可以从此页面打开它 https://www.google.com/settings/u/0/security/lesssecureapps

  2. 如果启用,则您的 Gmail 帐户可能启用两步验证。如果是这种情况,您需要创建应用程序专用密码。

按照此链接获取有关如何操作的分步指南 http://email.about.com/od/gmailtips/fl/How-to-Get-a-Password-to-Access-Gmail-By-POP-或-IMAP.htm