在Laravel 5.2中向多个用户发送邮件

时间:2016-06-27 12:32:52

标签: php email laravel-5.2

下面是我向多个用户发送邮件的代码。

 $email_id =  User::select('email_id')->get()->pluck('email_id');

     Mail::send('mail', [], function($message) use ($email_id)
        {
            $message->to($email_id)->subject('Welcome!!!');
        });

我将$email_id中的值设为

 ["xyz@abc.com","abc@abc.com","qwerty@abc.com"] 

有了这个,我得到错误

  

Illegal Offset Type

但是当我明确地写为

$email_id = ["xyz@abc.com","abc@abc.com","qwerty@abc.com"];

然后我就可以向多个用户发送邮件了。

为什么它不适用于

$email_id=  User::select('email_id')->get()->pluck('email_id');

并且可以正常使用

$email_id = ["xyz@abc.com","abc@abc.com","qwerty@abc.com"];

任何帮助都会感激不尽。

2 个答案:

答案 0 :(得分:0)

如果我们一次只发送一封电子邮件。然后我们可以使用这段代码

   $email_id = User::select('email_id')->get()->pluck('email_id'); 
     Mail::send('test', array('user' => $email_id) , function ($message) { 
     $message->from('from@example.com'), 'From Example Name'); 
     $message->to('xyz@gmail.com')->subject('Welcome!!!'); 
})

如果我们想向多个用户发送电子邮件,那么我们可以使用此代码

$email_id = User::select('email')->get()->pluck('email')->toArray(); 
Mail::send('test', array('user' => $email_id) , function ($message) use 
($email_id) { $message->from('from@example.com'), 'From Example Name');
 $message->to($email_id)->subject('Welcome!!!'); 
}); 

答案 1 :(得分:0)

只需附加

->toArray()

对代码起作用。

$email_id=  User::select('email_id')->get()->pluck('email_id')->toArray();

注意:以这种方式发送邮件可能会在服务器上造成瓶颈并最终强制将所有邮件传递到垃圾邮件/垃圾邮件文件夹(如果它已交付)。为避免这种情况,请编写一个将所有邮件排队的函数。有关更好的说明,请参阅https://laravel.com/docs/5.1/mail#queueing-mail