2014-11-11 3 views
6

Ich verwende Mail Funktion in Laravel unter der SwiftMailer Bibliothek.Laravel senden separate, mehrere E-Mails ohne foreach Schleife

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

Die obige Funktion sendet an mehrere Benutzer Mail, aber die Benutzer wissen, wer sind all die E-Mail als gesendet wird

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

So Adresse besteht aus inorder, dies zu korrigieren habe ich verwendet, um eine foreach Schleife, die die E-Mails sendet 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!'); 
     }); 
    } 

Der obige Code funktioniert gut ...

Meine Frage ist in diesem erweiterten Rahmen, dass gibt es eine Funktion, die E-Mails an die Benutzer mit einzigartigen to Adresse (dh) ohne einen Benutzer zu wissen, wie-viele andere die gleiche Mail ohne Verwendung eines foreach gesendet wird, senden könnte .. .

Antwort

9

Sie bcc (Blind Carbon copy) verwenden können:

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

Wenn ich Variablen zu jedem destinatary in der E-Mail im Zusammenhang verwenden muß, muß ich verwenden, um ein '' 'foreach '' '? – JCarlos

+1

@JCarlos Ja, wenn jede E-Mail-Adresse eindeutig ist, müssen Sie diese Schleife wiederholen und senden. Das obige funktioniert nur, wenn Sie die gleiche E-Mail an alle senden – Steve

1

Swiftmailer funktioniert wie Ihre normale E-Mail-Client (Outlook, Thunderbird, ...).

Was Sie tun, ist die einzige 100% richtig, es zu tun, aber Sie können immer noch tun, wie Steve vorgeschlagen, BCC verwenden, aber nicht eine noreply oder andere nicht-wichtige E-Mail-Adresse in der, da alle Empfänger sehen diese E-Mail-Adresse.

Hinweis: Der einzelne Funktionsaufruf macht Ihren Code nicht schneller oder weniger ressourcenhungrig.

+0

Sie sagen, dass die Verwendung einer 'foreach' und einer einzigen Funktion gleich sein wird ?? – Ronser

2

Sie CC oder BCC verwenden können gleiche HTML-Mail an N die Anzahl der Personen zu senden:

$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'); 
     });