2014-11-11 13 views
6

Używam funkcji Poczta w bibliotece pod biblioteką SwiftMailer.Laravel wysyła oddzielną, wielokrotną pocztę bez użycia pętli foreach

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

Powyższa funkcja wysyła wiadomość do kilku użytkowników, ale użytkownicy wiedzą, kim są poczta jest wysyłana jako jej do rozwiązania składa się z

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

Więc Inorder naprawić ten Użyłem foreach pętla który wysyła maile 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!'); 
     }); 
    } 

powyższy kod działa poprawnie ...

Moje pytanie brzmi: w tej zaawansowanej strukturze istnieje jakaś funkcja, która może wysyłać wiadomości do użytkowników o unikalnym to adresie (ie) bez wiedzy użytkownika, jak-wiele innych ta sama poczta jest wysyłana bez użycia numeru foreach .. .

Odpowiedz

9

można użyć BCC (blind carbon copy):

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

Jeśli muszę użyć zmiennych związanych z poszczególnymi destinatary w e-mailu, muszę użyć '' 'foreach '' '? – JCarlos

+1

@JCarlos Tak, jeśli każda wiadomość e-mail jest unikatowa, musisz ją zapętlić i wysłać. Powyższe działa tylko wtedy, gdy wysyłasz dokładnie ten sam e-mail do wszystkich, – Steve

1

SwiftMailer działa jak normalnego klienta pocztowego (Outlook, Thunderbird ...).

Co robisz jest tylko 100% poprawne, aby to zrobić, ale wciąż można zrobić jak Steve zasugerował, użyj BCC, ale nie używać noreply lub inny zakaz ważną adres email w celu, ponieważ wszystkie odbiorcy zobaczą ten adres e-mail.

Uwaga: Wywołanie funkcji pojedynczej nie spowoduje, że kod stanie się szybszy lub będzie mniej głodny.

+0

, czy mówisz, że używanie 'foreach' i pojedynczej funkcji będzie takie samo ?? – Ronser

2

Można użyć DW lub UDW, aby wysłać tę samą wiadomość HTML do liczby N osób:

$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'); 
     }); 
Powiązane problemy