пустая страница phpMailer при создании нескольких экземпляров класса - PullRequest
0 голосов
/ 16 сентября 2010

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

 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(...);
}

, он перенастраивает пустую страницу.Нет ошибок, сообщений, ничего.Прежде чем вы спросите, у меня включены 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();
       }

1 Ответ

1 голос
/ 16 сентября 2010

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

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

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

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

...