通过PHPMailer发送电子邮件时身份验证错误

时间:2016-04-07 05:04:03

标签: php email cakephp phpmailer

以下是我用于使用PHPMailer发送邮件但收到错误的代码。

 public function changePassword(){
   if($this->request->is('post')){
   require_once(ROOT .DS. 'vendor' . DS  . 'PHPMailer' . DS .  'class.phpmailer.php');
   $email = 'abc@gmail.com';
   $mail = new PHPMailer(); // create a new object
   $mail->IsSMTP(); // enable SMTP
   $mail->isHTML(true);
   $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
   $mail->SMTPAuth = true; // authentication enabled
   $mail->SMTPSecure = 'TLS'; // secure transfer enabled REQUIRED for Gmail
   $mail->Host = "smtp.gmail.com";
   $mail->Port = 587; // or 587
   $mail->IsHTML(true);
   $mail->Username = "xyz@gmail.com";
   $mail->Password = "dead_gone";
   $mail->SetFrom("xyz@gmail.com");
   $mail->AddAddress($email);
   $mail->Subject = "password recovery";
   $mail->Body = "your password is:- sdx_12345  click here to log in <a href ='http://localhost/cake/logins'> click here  </a>  ";

   if(!$mail->Send()) {
     echo "Mailer Error: " . $mail->ErrorInfo;
   } else {
       echo "mail sent";
     }
 }

}

错误:

  

SMTP - &gt;错误:服务器不接受AUTH:530 5.7.0必须首先发出STARTTLS命令。 v3sm8416695par.17 - gsmtp   SMTP错误:无法进行身份验证。邮件程序错误:SMTP错误:无法进行身份验证。

3 个答案:

答案 0 :(得分:1)

此属性区分大小写:

$mail->SMTPSecure = 'tls'

如果您将代码设置在the gmail example provided with PHPMailer上,这将有所帮助 - 它并不像您是第一个连接到Gmail的代码一样!

答案 1 :(得分:0)

尝试通过端口465建立SSL连接,并从谷歌

查看您帐户中的安全设置

答案 2 :(得分:-2)

你也应该把

$mail->IsHTML(true);
设置身体和附件后

编辑:

TLS也可能是小写的。