2016-10-28 3 views
0

Я пытаюсь отправить почту с защитой SMTP с помощью PHPMailer.Проблемы с подключением SMTP с PhpMailer

Я сделал эту функцию с помощью библиотеки PHPMailer

public function sendCsv($subject,$body,$path,$mail_to,$from_name,$from_mail,$replyto){ 
      require getcwd() .'/lib/PHPMailerAutoload.php'; 
      $mail = new PHPMailer; 

      //$mail->SMTPDebug = 3;        // Enable verbose debug output 

      $mail->isSMTP();          // Set mailer to use SMTP 

      $mail->Host = 'smtp.gmail.com'; 
      $mail->SMTPAuth = true;        
      $mail->Username = '[email protected]';     
      $mail->Password = '**************';       
      $mail->SMTPSecure = 'ssl';        
      $mail->Port = 465;        

      $mail->setFrom($from_mail, $from_name); 
      $mail->addAddress($mail_to); 
      $mail->addReplyTo($replyto, 'no reply'); 

      $mail->addAttachment($path);   
      $mail->isHTML(true);         

      $mail->Subject = $subject; 

      $mail->Body = $body; 
      //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

      if(!$mail->Send()) { 
       $error = 'Mail error: '.$mail->ErrorInfo; 
       echo $error; 
      } else { 
       $sucess = 'Mail sent!'; 
       echo $sucess; 
      } 
     } 

Теперь, если я закомментируйте строки $ mail-> isSMTP(); он работает нормально. но я думаю, что он не защищен SMTP. Else Я получаю это сообщение: «Ошибка почты: SMTP connect() не удалось.»

Я искал эту проблему, но не получил правильного ответа, что я ищу. Пожалуйста, помогите мне.

Я работаю на сервере Dev с защитой HTAccess

+0

Вы используете старую версию PHPMailer, и вам нужно [прочитать документы] (https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting). Кроме того, поиск до публикации, есть много дубликатов этого вопроса. – Synchro

+0

Возможный дубликат [SMTP connect() failed phpmailer] (http://stackoverflow.com/questions/30476024/smtp-connect-failed-phpmailer) – Synchro

ответ

0

Ну я нашел подробности решить проблему здесь https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting.

Я только что включил менее безопасные приложения https://www.google.com/settings/security/lesssecureapps из моей учетной записи gmail.

Для этого требуется несколько минут или час.

Мой текущий код:

public function sendCsv($subject,$body,$path,$mail_to,$from_name,$from_mail,$replyto){ 
      require getcwd() .'/lib/PHPMailerAutoload.php'; 
      $mail = new PHPMailer(); 

      $mail->isSMTP(); 
      $mail->Host = 'smtp.gmail.com'; 
      //$mail->SMTPDebug = 2;        
      $mail->SMTPAuth = true; 
      $mail->SMTPSecure = 'tls';        
      $mail->Port = 587; 

      $mail->Username = '[email protected]';     
      $mail->Password = 'mypass';          


      $mail->setFrom($from_mail, $from_name); 
      $mail->addAddress($mail_to); 
      $mail->addReplyTo($replyto, 'no reply'); 

      $mail->addAttachment($path);   
      $mail->isHTML(true);         

      $mail->Subject = $subject; 

      $mail->Body = $body; 
      //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

      if(!$mail->Send()) { 
       $error = 'Mail error: '.$mail->ErrorInfo; 
       echo $error; 
      } else { 
       $sucess = 'Mail sent!'; 
       echo $sucess; 
      } 
     } 

Иначе вы должны установить приложение из console.developers.google.com

Следуйте это руководство: https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2