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));