2014-01-14 102 views
1

我嘗試從數據庫中填充電子郵件的接收者。如果我寫的ADRESS直接到$ MAIL->一切工作正常,但無法使用此代碼?:Laravel Mail ::用郵件發送 - > to循環

$users = User::where('message_receiver','=',true)->get(); 
$data = array(
    'url' => Config::get('app.url'), 
    'name' => 'test' 
); 

Mail::send('emails.message', $data, function($mail) use ($users) 
{ 
    $mail->from('[email protected]','[email protected]'); 
    foreach ($users AS $user) { 
     $mail->to($user->email, $user->firstname.' '.$user->surname); 
    } 
    $mail->subject('New Message'); 
}); 

print_r($user->email)在循環轉儲正確ADRESS!

+0

您確定要將所有地址列出並顯示給所有收件人嗎?相反,請查找'Mail :: send'並在當時處理一個用戶。 – Andreyco

+0

嗨,是的,在這種情況下,如果所有的地址列表都是沒有問題的。 – fillibuster

回答

1

我從來沒有Laravel工作,但通過這個鏈接http://bundles.laravel.com/bundle/Messages

據我瞭解,電子郵件發送到多個電子郵件地址,你必須先添加所有地址轉換成數組,然後該數組傳遞給$message->to()方法,不要你呢?

這是從該鏈接的例子:

Message::send(function($message) 
{ 
    $message->to(array('[email protected]', '[email protected]' => 'name')); 
    $message->cc('[email protected]'); 
    $messages->bcc(array('[email protected]' => 'Another name', '[email protected]')); 

    $message->from('[email protected]', 'Bob Marley'); 
    $message->subject('Hello!'); 
    $message->body('I really like spamming people!'); 
}); 

所以,在我的想法,你應該嘗試從$users使數組,然後把它傳遞給方法,像這樣:

Mail::send('emails.message', $data, function($mail) use ($users) 
{ 
    $mail->from('[email protected]','[email protected]'); 
    foreach ($users AS $user) { 
     $receivers = array_add($receivers, $user->email, $user->email); 
    } 
    $mail->to($receivers); 
    $mail->subject('New Message'); 
}); 

我不知道我是否正確地使用數組,但我認爲你有alredy知道該怎麼做。