2014-11-11 2 views
6

Я использую Mail функция в laravel под SwiftMailer библиотека.Laravel отправка отдельно, несколько почта без использования foreach loop

Mail::send('mail', array('key' => $todos1), function($message) { 
     $message->to(array('[email protected]','[email protected]','[email protected]','[email protected]'))->subject('Welcome!'); 
    }); 

выше функция отправляет почту на несколько пользователей, но пользователи знают о том, кто все отправляется почта, как его в адрес состоит из

To: [email protected], [email protected], [email protected], [email protected] 

Так Симметричного, чтобы исправить это я использовал foreach цикл, который отправляет почту seperatly

foreach($to as $receipt){ 
     //Mail::queue('mail', array('key' => $todos1), function($message) use ($receipt) 
     Mail::send('mail', array('key' => $todos1), function($message) use ($receipt) 
     { 
      $message->to($receipt)->subject('Welcome!'); 
     }); 
    } 

Приведенный выше код работает отлично ...

Мой вопрос в том, что в этой расширенной структуре есть какая-либо функция, которая могла бы отправлять письма пользователям с уникальным адресом to (т. Е.) Без одного пользователя, знающего, как много других отправляется одна и та же почта без использования foreach .. .

ответ

9

Вы можете использовать BCC (слепая копию):

Mail::send('mail', array('key' => $todos1), function($message) { 
    $message->to('[email protected]') 
    ->bcc(array('[email protected]','[email protected]','[email protected]','[email protected]')) 
    ->subject('Welcome!'); 
}); 
+0

Если мне нужно использовать переменные, связанные с каждой destinatary в электронной почте, я должен использовать '' 'Еогеасп '' '? – JCarlos

+1

@JCarlos Да, если каждое электронное письмо уникально, тогда вам нужно будет зациклиться и отправить все. Вышеуказанное работает только в том случае, если вы отправляете то же самое электронное письмо всем – Steve

1

SwiftMailer работает как обычный почтовый клиент (Outlook, Thunderbird ...).

То, что вы делаете, является единственным 100% правильным, чтобы сделать это, но вы все еще можете сделать, как предложил Стив, использовать BCC, но не используйте непристойный или другой не важный адрес электронной почты в, поскольку все получатели получат этот адрес электронной почты.

Примечание: вызов одной функции не сделает ваш код более быстрым или менее ресурсоемким.

+0

, утверждаете ли вы, что использование 'foreach' и одной функции будет одинаковым? – Ronser

2

Вы можете использовать CC или BCC для отправки же HTML почты N число лиц:

$content = '<h1>Hi there!</h1><h2 style="color:red">Welcome to stackoverflow..</h2>'; 
    $bcc = ['*****@gmail.com','******@gmail.com']; 
    $sub = "Sample mail"; 
     Mail::send([], [], function($message) use ($content, $sub, $bcc) { 
     $message->from('[email protected]','name'); 
     $message->replyTo('[email protected]', $name = 'no-reply'); 
     $message->to('******@domain.com', 'name')->subject($sub); 
     $message->bcc($bcc, $name = null); 
     // $message->attach('ch.pdf'); // if u need attachment 
     $message->setBody($content, 'text/html'); 
     });