2016-07-12 8 views
0

Мне удалось заставить его отправлять электронную почту одному пользователю одновременно, но не нескольким пользователям. Хотя я пробовал много способов, ниже приведен пример кода, с помощью которого я пытаюсь отправить несколько писем.Отправка нескольких электронных писем сразу с использованием Laravel 4.2

if (isset($_POST['searchbutton'])) {
   $data = $query->where('blood_type', '=', "$search")
       ->Where('state', '=', "$state")->get();

   if (isset($POST['emailbutton'])) {
    foreach ($data as $row)
     Mail::send('emails.notify', array('name' => 'Name'), function($message) {

      $message->to($row->email, $row->name)->subject('Hello');
     });
   }
  }
 

спасибо.

ответ

0

Вот некоторые предложения об изменениях в предположении, что все пользователи будут получать тот же адрес электронной почты, означает, что вы не будете настраивать каждое письмо с именем пользователя:

if (isset($_POST['searchbutton'])) { 
    $data = $query->where('blood_type', '=', "$search") 
    ->Where('state', '=', "$state")->get(); 

    $emails = $query->where('blood_type', '=', "$search") 
    ->Where('state', '=', "$state")->lists('email'); 

    if (isset($POST['emailbutton'])) { 
    Mail::send('emails.notify', array(), function($message) use ($emails) { 
     $message->to($emails)->subject('Hello'); 
     }); 
    } 
} 
0

Фактическая ошибка в том, что переменная $row не входит в объем вашего закрытия. Чтобы исправить это, вам нужно использовать ключевое слово use. т.е.

foreach ($data as $row){ 
    Mail::send('emails.notify', array('name' => 'Name'), 
     function($message) use ($row) { 
      $message->to($row->email, $row->name)->subject('Hello'); 
     } 
    ); 
} 

Вы можете прочитать больше about PHP closures here.

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