Laravel在不使用foreach循环的情况下发送单独的多个邮件

时间:2014-11-11 11:58:05

标签: php email laravel laravel-4 swiftmailer

我在 SwiftMailer 库下的laravel中使用 Mail 功能。

Mail::send('mail', array('key' => $todos1), function($message) {
        $message->to(array('TEST@example.com','TESsdT@example.com','TESjxfjT@example.com','TESfssdT@example.com'))->subject('Welcome!');
    });

上述功能向多个用户发送邮件,但用户知道谁将所有邮件发送为其地址包含

To: TEST@example.com, TESsdT@example.com, TESjxfjT@example.com, TESfssdT@example.com

所以为了纠正这个问题,我使用了一个foreach循环来单独发送邮件

    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 ...

发送相同的邮件

3 个答案:

答案 0 :(得分:9)

您可以使用密送(盲目复印件):

Mail::send('mail', array('key' => $todos1), function($message) {
    $message->to('firstemail@example.com')
    ->bcc(array('TEST@example.com','TESsdT@example.com','TESjxfjT@example.com','TESfssdT@example.com'))
    ->subject('Welcome!');
});

答案 1 :(得分:2)

您可以使用CC或BCC向N个人发送相同的html邮件:

$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('ur-mail-id@gmail.com','name');
        $message->replyTo('no-reply@gmail.com', $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');
      });

答案 2 :(得分:1)

SwiftMailer的工作方式与普通的电子邮件客户端(Outlook,Thunderbird ...)相似。

你正在做的是唯一100%正确的做法,但你仍然可以像史蒂夫建议的那样,使用BCC,但不要在to中使用noreply或其他非重要的电子邮件地址,因为所有收件人会看到该电子邮件地址。

注意:单个函数调用不会使代码更快或资源消耗更少。