How to Send Bulk Mail Using Queue in Laravel 8

WebSolutionStuff | Feb-10-2021 | Categories : Laravel

In this example we will see how to send bulk mail using queue in laravel 8.

Laravel queue is used for send bulk mail with background process, as we know if we are sending single mail in laravel application it is work properly without taking more time but if you want to send multiple email in laravel then it will take too mauch time and also you can not do any operation during this time periods.

So, if you want to send bulk mail then you need to use laravel queue using queue we can send multiple email in laravel with background process. let's start and follow below steps for how to send bulk mail in laravel.

Step 1 : Change In .env File

We need to change configuration foe queue set up in .env file as below, here we have used




 Step 2 : Create Route

In this step we will create routes for send bulk mail using queue.

use App\Http\Controllers\SendMailController;

Route::get('send/mail', [SendMailController::class, 'send_mail'])->name('send_mail');


Step 3 : Create Queue Table

Now, we will create 'jobs' table in database, so copy below command and run in your terminal.

php artisan queue:table

php artisan migrate‚Äč


Step 4 : Create Controller 

In this step we will create SendMailController and add below code.


namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SendMailController extends Controller
    public function send_mail(Request $request)
    	$details = [
    		'subject' => 'Test Notification'
        $job = (new \App\Jobs\SendQueueEmail($details))

        echo "Mail send successfully !!";



Step 5 : Create Job

Now, we need to create the SendQueueEmail.php file in the app\Jobs folder using below command in your terminal and copy below code. 

php artisan make:job SendQueueEmail



namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\User;
use Mail;

class SendQueueEmail implements ShouldQueue
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    protected $details;
    public $timeout = 7200; // 2 hours

     * Create a new job instance.
     * @return void
    public function __construct($details)
        $this->details = $details;

     * Execute the job.
     * @return void
    public function handle()
        $data = User::all();
        $input['subject'] = $this->details['subject'];

        foreach ($data as $key => $value) {
            $input['email'] = $value->email;
            $input['name'] = $value->name;
            \Mail::send('mail.Test_mail', [], function($message) use($input){
                $message->to($input['email'], $input['name'])


Step  6 : Create Mail Blade

In this step, we will create mail blade file in resources/views/mail/Test_mail.blade.php and write add  below mail content.

Hi <br/>
This is Test Mail.<br />
Thank you !!

And run below command in your terminal to send manually mail.

php artisan queue:listen


how to send bulk mail using queue in laravel 8


Recommended Post
Featured Post

Follow us
facebooklogo github instagram twitter