2014-12-04 3 views
0

Я создаю класс PHP для отправки электронной почты. Проблема в том, что по какой-то причине почта не отправляется. Кто-нибудь знает, где проблема?PHPMailer не удается отправить электронное письмо

Я бегу это на XAMPP

Вот код:

include_once "class.sendMAIL.php"; 
$sendActivation = new sendMAIL(); 
$body="http://$_SERVER[HTTP_HOST]/activation.php?id=$activationCode"; 
if ($sendActivation->sendActivationEmail($name, $email,$body)) 
{ 
    echo "MAIL SENT"; 
} 
else { 
    echo "ERROR IN SENDING"; 
} 

почта класс:

require 'PHPMailerAutoload.php'; 
class sendMAIL { 
    private $sendEmail; 
    public function __construct() { 
     $this->sendEmail = new PHPMailer(); 
     $this->sendEmail->isSMTP();  // Set mailer to use SMTP 
     $this->sendEmail->Host = ' smtp.gmail.com'; // Specify main and backup SMTP servers 
     $this->sendEmail->SMTPAuth = true; // Enable SMTP authentication 
     $this->sendEmail->Username = '[email protected]'; // SMTP username 
     $this->sendEmail->Password = 'mypassword';   // SMTP password 
     $this->sendEmail->SMTPSecure = 'ssl';  // Enable encryption, 'ssl' also accepted 
     $this->sendEmail->port ="465"; 
     $this->sendEmail->From = ""; 
     //$this->sendEmail->FromName = $name; 
     $this->sendEmail->isHTML(true); 
    } 

    public function sendActivationEmail($name, $email, $link) { 
     $this->sendEmail->AddAddress($email); 
     $this->sendEmail->Subject="Aktivacija"; 
     $body="Follow this link to activate your account: <a href='$link' />LINK</a>"; 
     $this->sendEmail->MsgHTML($body); 
     if($this->sendEmail->send()) { 
      return TRUE; 
     } 
     else { 
      return FALSE; 
     }  
    } 
} 

ЭТО ОШИБКА, ЧТО Я ПОЛУЧИЛ КОГДА Я отлажена ПРОБЛЕМА:

You must provide at least one recipient email address. 

Thanks to @paulgv Я исправил ошибку, но теперь я получил эту ошибку:

SMTP connect() failed 

Кто-нибудь знает, где проблема?

EDIT: проблема вызвана gmail. gmail заблокировал мой webapp для доступа к моей электронной почте.

+0

откуда вы его не отправляете? (не получение не то же самое, что не отправка) –

+0

, чтобы вы вернулись обратно? то вы должны проверить '$ this-> sendEmail-> ErrorInfo' для деталей. и/или посмотреть журналы вашего почтового сервера, чтобы узнать, было ли/почему почта была отклонена. –

+0

Я пробовал ... Я «отлаживаю», если почта отправляется из класса, который вызывает класс sendMAIL, а вывод FALSE – jureispro

ответ

1

Так вот ответ, скопированный из комментария я отправил раньше;)

Хорошо, я также найти эту строку странно в вашем коде: $this->sendEmail->AddAddress=($email); может быть, попробовать с $this->sendEmail->AddAddress($email); вместо этого?

Теперь, касаясь вашей проблемы с аутентификацией SMTP, вы пытались включить режим подробностей? Может помочь ! Согласно документации, вы должны сделать что-то вроде этого:

$this->sendEmail->SMTPDebug = 3; 
0

Для выпуска аутентификации SMTP, попробуйте следующее:

$this->sendEmail->SMTPAuth = true;     // enable SMTP authentication 
$this->sendEmail->SMTPSecure = "tls";     // sets the prefix to the servier 
$this->sendEmail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
$this->sendEmail->Port  = 587; 

Это работает для меня.

Смежные вопросы