Laravel Mail::send() sending to multiple to or bcc addresses Laravel Mail::send() sending to multiple to or bcc addresses laravel laravel

Laravel Mail::send() sending to multiple to or bcc addresses


I've tested it using the following code:

$emails = ['myoneemail@esomething.com', 'myother@esomething.com','myother2@esomething.com'];Mail::send('emails.welcome', [], function($message) use ($emails){        $message->to($emails)->subject('This is test e-mail');    });var_dump( Mail:: failures());exit;

Result - empty array for failures.

But of course you need to configure your app/config/mail.php properly. So first make sure you can send e-mail just to one user and then test your code with many users.

Moreover using this simple code none of my e-mails were delivered to free mail accounts, I got only emails to inboxes that I have on my paid hosting accounts, so probably they were caught by some filters (it's maybe simple topic/content issue but I mentioned it just in case you haven't received some of e-mails) .


If you want to send emails simultaneously to all the admins, you can do something like this:

In your .env file add all the emails as comma separated values:

ADMIN_EMAILS=admin1@site.com,admin2@site.com,admin3@site.com

so when you going to send the email just do this (yes! the 'to' method of message builder instance accepts an array):

So,

$to = explode(',', env('ADMIN_EMAILS'));

and...

$message->to($to);

will now send the mail to all the admins.


the accepted answer does not work any longer with laravel 5.3 because mailable tries to access ->email and results in

ErrorException in Mailable.php line 376: Trying to get property of non-object

a working code for laravel 5.3 is this:

$users_temp = explode(',', 'first@example.com,second@example.com');    $users = [];    foreach($users_temp as $key => $ut){      $ua = [];      $ua['email'] = $ut;      $ua['name'] = 'test';      $users[$key] = (object)$ua;    } Mail::to($users)->send(new OrderAdminSendInvoice($o));