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

问题描述:

Following is the code that I am using for sending mail using PHPMailer but getting error.

 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";
     }
 }

}

ERROR:

SMTP -> ERROR: AUTH not accepted from server: 530 5.7.0 Must issue a STARTTLS command first. v3sm8416695par.17 - gsmtp SMTP Error: Could not authenticate. Mailer Error: SMTP Error: Could not authenticate.

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

  public function changePassword(){
 if($ this-&gt; request-&gt; is('post')){
 require_once(ROOT .DS。'vendor'.DS.'PHPMailer  '。DS。'class.phpmailer.php'); 
 $ email ='abc@gmail.com'; 
 $ mail = new PHPMailer();  //创建一个新对象
 $ mail-&gt; IsSMTP();  //启用SMTP 
 $ mail-&gt; isHTML(true); 
 $ mail-&gt; SMTPDebug = 1;  //调试:1 =错误和消息,2 =仅消息
 $ mail-&gt; SMTPAuth = true;  //启用身份验证
 $ mail-&gt; SMTPSecure ='TLS';  //为Gmail启用安全传输
 $ mail-&gt; Host =“smtp.gmail.com”; 
 $ mail-&gt; Port = 587;  //或587 
 $ mail-&gt; IsHTML(true); 
 $ mail-&gt; Username =“xyz@gmail.com”; 
 $ mail-&gt; Password =“dead_gone”; 
 $ mail  - &gt; SetFrom(“xyz@gmail.com”); 
 $ mail-&gt; AddAddress($ email); 
 $ mail-&gt; Subject =“password recovery”; 
 $ mail-&gt; Body =  “您的密码是: -  sdx_12345点击此处登录&lt; a href ='http:// localhost / cake / logins'&gt;点击此处&lt; / a&gt;”; 
 
 if(!$ mail-&gt  ;发送()){
 echo“梅勒错误:”。  $ mail-&gt; ErrorInfo; 
} else {
 echo“mail sent”; 
} 
} 
  code>  pre> 
 
 

} p>

错误: strong> p>

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

This property is case-sensitive:

$mail->SMTPSecure = 'tls'

It would help if you based your code on the gmail example provided with PHPMailer - it's not as if you're the first to connect to gmail!

try a SSL connection over the port 465 and look at you security settings in you account from google

You should also put

$mail->IsHTML(true);

after you set your body and attachments.

Edit:

It also might be possible that TLS has to be lowercase.