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

Stefan Izdrail

Founder & Senior Architect · 2026-06-29

Laravel Company
Title: Sending Emails with Multiple Recipients Using Laravel's Mail::send() Method Body: You might have encountered some difficulties when using Laravel's Mail::send() method to send emails to multiple recipients (both to and BCC). This blog post aims to provide a comprehensive explanation on how to approach this issue, as well as offer best practices for your Laravel applications. First, let's take a closer look at the two options you tried: 1. Chaining
// for example
$emails = array("myemail1@email.com", "myemail2@email.com");
$input = Input::all();

Mail::send('emails.admin-company', array('body' => Input::get('email_body')), 
function($message) use ($emails, $input) {
    $message
    ->from('admin@admin.org', 'Administrator')
    ->subject('Admin Subject');

        foreach ($emails as $email) {
            $message->to($email);
        }
});
In this case, you are chaining the function calls to set the recipient's email address. While this works for a single recipient, it fails when sending emails to multiple recipients since the Mail::send() method requires an array of recipients as the first argument. 2. Passing an Array
// for example
$emails = array("myemail1@email.com", "myemail2@email.com");
$input = Input::all();

Mail::send('emails.admin-company', array('body' => Input::get('email_body')), 
    function($message) use ($emails, $input) {
        $message
        ->from('admin@admin.org', 'Administrator')
        ->subject('Admin Subject');

        $message->to($emails);
});
In this case, you tried passing an array of email addresses as the recipients but ended up with failure messages and returned Mail::failures(). This is expected behavior since Laravel's API documentation states that the to() method should be passed a string or array rather than an object containing multiple properties, like a Message instance. Now let's address your problem and provide the correct solution: 1. Use separate methods for each recipient type (to, cc, bcc) Instead of using Laravel's built-in Mail::send() method with extra chaining or array passing, you should use separate methods for each recipient type. This will remove the issue of passing an object and make your code cleaner. For example:
$to = array("myemail1@email.com", "myemail2@email.com");
   $cc = array(); // add any cc recipients if needed
   $bcc = array("secretrecipient@example.com");

   Mail::send('emails.admin-company', array('body' => Input::get('email_body')), 
       function($message) use ($to, $cc, $bcc) {
           $message
           ->from('admin@admin.org', 'Administrator')
           ->subject('Admin Subject');

           $message->to($to); // add multiple to recipients
           $message->cc($cc); // add cc recipients if needed
           $message->bcc($bcc); // add bcc recipients
       });
2. Understand the API better The Laravel documentation states that to(), cc(), and bcc() methods should be used with strings or arrays of email addresses rather than an object representing a message like $message. Make sure to follow these guidelines to avoid any issues. The provided solutions above should help you successfully send emails to multiple recipients using Laravel's Mail::send() method, enabling you to chain the method calls or pass an array of addresses as required. Just ensure your understanding of the API and use separate methods for each recipient type when necessary. Remember, always check the documentation thoroughly and look for best practices before attempting any solution. You can also refer to Laravel's extensive video tutorial library and community support on platforms like Stack Overflow. For a more in-depth understanding of this topic, check the Laravel documentation about Mail Handling and how to create emails. You'll find useful examples and guidelines on handling multiple recipients, attachments, content, and more. By following these steps and improving your understanding of Laravel's API, you will be better equipped to tackle any potential issues while working with mail functionality in your Laravel applications.