2010-09-16 2 views
0

Я создаю функцию для отправки уведомления электронной почты пользователю с использованием библиотеки phpMailer.phpMailer пустая страница при создании нескольких экземпляров класса

public function notify($address,$subject = '',$body = null,$mailer_options = array()) { 
     try { 
      $phpmailer = new PHPMailer($exceptions = true); 
      $phpmailer->CharSet = 'UTF-8'; 
      $phpmailer->IsSMTP(); 
      $phpmailer->SMTPAuth = true; 
      $phpmailer->SMTPKeepAlive = true; 
      //$phpmailer->SMTPDebug = true; 
      $phpmailer->IsHTML(true); 

      $phpmailer->Host = ... 
      $phpmailer->Username = ... 
      $phpmailer->Password = ... 
      $phpmailer->From = ... 
      $phpmailer->FromName =... 


      $phpmailer->AddAddress($address); 
      $phpmailer->Subject = $subject; 
      $phpmailer->Body = $body; 

      $phpmailer->Send(); 
      $phpmailer->ClearAllRecipients(); 
} 

Это нормально работает, если я просто отправлю электронное письмо или отправил несколько электронных писем внутри класса. Но если сделать

for($i=0;$i<3;$++) 
{ 
    $notification = new $Notification(); 
    $notification->notify(...); 
} 

Это Retuns пустую страницу. Нет ошибок, сообщений, ничего. Прежде чем спросить, у меня включен display_errors.

Что это может быть?

Он отлично работает, если я только один экземпляр PHPMailer как это:

$phpmailer = new PHPMailer($exceptions = true); 
(...) 

     for($i=0;$i<3;$i++) 
     { 
      $phpmailer->AddAddress('address'); 
      $phpmailer->Subject = ""; 
      $phpmailer->Body = "sasa"; 

      $phpmailer->Send(); 
      $phpmailer->ClearAllRecipients(); 
     } 
+0

В этом примере он отправляет 2 письма, а затем умирает. – brpaz

ответ

1

Удалите $ из new Notification:

for($i=0;$i<3;$++) 
{ 
    $notification = new Notification(); 
    $notification->notify(...); 
} 

new $Notification создаст новый экземпляр из значения переменной $Notification , Это будет работать только если $Notification действительно содержит «Уведомление» (предполагается, что ваш класс называется «Уведомление»)

Если вы включили display_errors в вашем PHP скрипте, но сервер отключил его по умолчанию, ошибки выиграли» t будет отображаться, если в вашем скрипте есть синтаксическая ошибка.

+0

Извините, это была ошибка ввода. Я скорректировал свой код, чтобы поместить его здесь – brpaz

+0

Я вижу блок 'try'. Где «поймать»? Как вы включили 'display_errors'? С .htaccess/php.ini или скриптом PHP? См. Отредактированный пост. – Lekensteyn

+0

Я работаю на localhost. Также я использую Symfony Framework в среде dev, поэтому он показывает все исключения и erros по умолчанию. – brpaz

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