2014-11-11 10 views
6

Sto utilizzando la funzione Mail in laravel sotto la libreria SwiftMailer.Laravel invia posta separata separata senza utilizzare il ciclo foreach

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

La funzione di cui sopra invia la posta a diversi utenti, ma gli utenti sanno di che stanno tutta la posta viene inviata come i suoi per affrontare comprende

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

Così inorder per rimediare a questa ho usato un foreach ciclo che invia le e-mail in modo esclusivo

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

Il codice di cui sopra funziona bene ...

La mia domanda è che in questo quadro avanzato v'è alcuna funzione che potrebbe inviare mail agli utenti con l'esclusiva to indirizzo (cioè) senza un utente sapere a come-tanti altri la stessa mail viene inviata senza utilizzare un foreach .. .

risposta

9

È possibile utilizzare bcc (copia carbone nascosta):

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

Se ho bisogno di utilizzare le variabili associate a ciascun destinatary nella e-mail, devo usare una '' foreach ' '' '? – JCarlos

+1

@JCarlos Sì, se ogni e-mail è univoca, sarà necessario eseguire un ciclo e inviare ciascuno di essi. Quanto sopra funziona solo se stai inviando esattamente la stessa email a tutti – Steve

1

SwiftMailer funziona come un normale client di posta (Outlook, Thunderbird ...).

Quello che stai facendo è l'unico 100% corretto per farlo, ma puoi ancora fare come suggerito Steve, usa BCC, ma non usare un noreply o altro indirizzo email non importante in a, dal momento che tutti i destinatari vedranno quell'indirizzo email.

Nota: la chiamata a una sola funzione non renderà il codice più veloce o meno affamato di risorse.

+0

stai dicendo che usando un 'foreach' e una singola funzione sarà la stessa ?? – Ronser

2

È possibile utilizzare CC o BCC di inviare stessa mail html nel numero N di persone:

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