2014-11-11 15 views
6

Tôi đang sử dụng chức năng Thư trong laravel theo thư viện SwiftMailer.Laravel gửi riêng, nhiều thư mà không sử dụng vòng lặp foreach

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

Chức năng trên sẽ gửi mail cho nhiều người dùng, nhưng những người sử dụng biết để những người đang tất cả các mail được gửi như nó để giải quyết bao gồm

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

Vì vậy inorder để khắc phục điều này tôi đã sử dụng một foreach vòng lặp mà gửi mail 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!'); 
     }); 
    } 

Đoạn mã trên hoạt động tốt ...

Câu hỏi của tôi là trong khung nâng cao này, có bất kỳ chức năng nào có thể gửi thư cho người dùng với địa chỉ to duy nhất (nghĩa là) mà không có người dùng biết nhiều thư khác được gửi mà không sử dụng foreach .. .

Trả lời

9

bạn có thể sử dụng 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

Nếu tôi cần phải sử dụng các biến liên quan đến mỗi destinatary trong email, tôi phải sử dụng một '' 'foreach '' '? – JCarlos

+1

@JCarlos Có, nếu mỗi email là duy nhất, thì bạn sẽ cần lặp lại và gửi từng email. Ở trên chỉ hoạt động nếu bạn đang gửi chính xác cùng một email cho tất cả mọi người – Steve

1

SwiftMailer hoạt động như ứng dụng email bình thường của bạn (Outlook, Thunderbird ...).

Điều bạn đang làm là chính xác 100% để thực hiện, nhưng bạn vẫn có thể làm như Steve đã đề xuất, sử dụng BCC, nhưng không sử dụng địa chỉ email không quan trọng hoặc không quan trọng khác trong đó, vì tất cả người nhận sẽ thấy địa chỉ email đó.

Lưu ý: Cuộc gọi chức năng duy nhất sẽ không làm cho mã của bạn bị đói nhanh hơn hoặc ít tài nguyên hơn.

+0

là bạn nói rằng bằng cách sử dụng một 'foreach' và một chức năng duy nhất sẽ giống nhau ?? – Ronser

2

Bạn có thể sử dụng CC hoặc BCC để gửi cùng một email html để số N của người:

$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'); 
     }); 
Các vấn đề liên quan