How to Send E-mail Using Queue in Laravel 7/8

WebSolutionStuff | Oct-30-2020 | Categories : Laravel PHP

Today i will show you How to Send E-mail Using Queue in Laravel 7/8, many time we can see some process take more time to load like payment gateway, email send, etc. Whenever you are sending email for verification then it load time to send mail because it is services. If you don't want to wait to user for send email or other process on loading server side process then you can use queue.

So let's see send mail using queue in laravel 7/8 and laravel 7/8 mail queue example.



Step 1 : Install Laravel 

Install Laravel application using comoposer command.


Step 2: Create Mail Setup

Run below command in your terminal

php artisan make:mail SendEmailDemo


Now you will find new Mail folder in app directory with SendEmailDemo.php file. So copy below code on this file.



namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class SendEmailDemo extends Mailable
    use Queueable, SerializesModels;

     * Create a new message instance.
     * @return void
    public function __construct()

     * Build the message.
     * @return $this
    public function build()
        return $this->subject('Test Mail using Queue in Larvel 8')            


After that we need to create email view using blade file.So,we will create demo.blade.php following path.


<!DOCTYPE html>
	<title>How to send mail using queue in Laravel 7/8 ?</title>
<h2 style="padding: 23px;border: 6px red solid;">
	<a href="">Visit Our Website :</a>
<p>This is test mail. This mail send using queue listen in laravel 7/8.</p>  
<strong>Thanks & Regards.</strong>



Now, we will configuration of view file, we have to setup for email send, So let' set configuration in .env file.



Step 3: Configuration of Queue

Now, we are setup configuration on queue driver so first of all, we will set queue driver "database". You can set as you want also we will define driver as redis too. So here define database driver on .env file.


After that we need to generate migration and create tables for queue. So let's run below command for queue database tables.

php artisan queue:table

Now, run migration in your terminal.

php artisan migrate



Step 4: Create Queue Job

In this step we will create new queue job So, copy below command in your termianal.

php artisan make:job SendEmailJob



As of now you will find SendEmailJob.php file in this path app/Jobs/SendEmailJob.php. So, copy below code in that location.


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\Mail\SendEmailDemo;
use Mail;

class SendEmailJob implements ShouldQueue
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    protected $send_mail;
     * Create a new job instance.
     * @return void
    public function __construct($send_mail)
        $this->send_mail = $send_mail;

     * Execute the job.
     * @return void
    public function handle()
        $email = new SendEmailDemo();        


Step 5: Test Queue Job

Now , we will test our queue job. add below code in your web.php file

Route::get('test/email', function(){
	$send_mail = '[email protected]';
    dispatch(new App\Jobs\SendEmailJob($send_mail));
    dd('send mail successfully !!');


Now, clear config cache using below command for send mail with queue laravel 7/8.

php artisan config:clear

Now, run this laravel 7/8 queue example with artisan command.

php artisan serve


Finally, we are able to run this queue will get result like below images.



Recommended Post
Featured Post