10-Apr-2023
.
Admin
This article will provide example of laravel 8 mail send using queue. you will learn mail send using queue in laravel 8 application. I will give easy and simple example for how to send mail using queue in laravel 8. In this tutorial we will look at example of laravel 8 mail send using queue.
This tutorial will give you mail send using queue in laravel 8. We will discuss laravel 8 mail send using queue. let's discuss about laravel 8 mail send using queue.
Here i will give you full example for send mail using queue in laravel 8 application. So let's see bellow step by step:
Step 1 : Install Laravel 8
In the first step, we need to get fresh laravel 8 version application So let's open terminal and run bellow command to install fresh laravel project.
composer create-project --prefer-dist laravel/laravel blog
Step 2 : Database Configuration
In second step, we will make database Configuration for example database name, username, password etc. So lets open .env file and fill all deatils like as bellow:
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=here your database name(blog)
DB_USERNAME=here database username(root)
DB_PASSWORD=here database password(root)
Step 3: Create Mail Setup
In this step ypu will create email for testing using laravel Mail facade. So let's open terminal and run bellow command:
php artisan make:mail TestEmailSend
Now you will have new folder as Mail in app directory with TestEmailSend.php file. So let's put bellow code in this file:
app/Mail/TestEmailSend.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class TestEmailSend 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->view('emails.testMail');
}
}
Now we will create email view file using blade file first you can create "emails" folder in view directory and in this folder we will create simple view file and put bellow code:
resources/views/emails/test.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Laravel 8 Mail Send using Queue Example - Nicesnippets.com</title>
</head>
<body>
<center>
<h2 style="padding: 23px;background: #b3deb8a1;border-bottom: 6px green solid;">
<a href="https://Nicesnippets.com">Visit Our Website : Nicesnippets.com</a>
</h2>
</center>
<p>Hi, Sir</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<strong>Thank you Sir. :)</strong>
</body>
</html>
after configuration of view file, we have to setup for email send, So let' set configuration in .env file:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xyz@gmail.com
MAIL_PASSWORD=123456
MAIL_ENCRYPTION=tls
Step 4: Configuration of Queue
In this step, we will make configuration on queue driver so first of all we will set queue drive "database" in .env file:
.env
QUEUE_CONNECTION=database
After that we need to generate migration and create tables for queue. So let's run bellow command for queue database tables:
Generate Migration:
php artisan queue:table
Run Migration:
php artisan migrate
Step 5: Create Queue Job
now we will create queue job bey following command, this command will create queue job file with Queueable. So let's run bellow command:
php artisan make:job SendEmailJob
now you have SendEmailJob.php file in "Jobs" directory. So let's see that file and put bellow code on that file.
app/Jobs/SendEmailJob.php
<?php
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\TestEmailSend;
use Mail;
class SendEmailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $details;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($details)
{
$this->details = $details;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$email = new TestEmailSend();
Mail::to($this->details['email'])->send($email);
}
}
Step 6: Create Route & Test Queue job
Now time is use and test created queue job, so let's simple create route with following code for testing created queue.
routes/web.php
Route::get('email-test', function(){
$details['email'] = 'your_email@gmail.com';
dispatch(new \App\Jobs\SendEmailJob($details));
dd('Send Email Successfully');
});
Ok route is defined, you can watch your queue process using laravel queue command, so let's run bellow command:
php artisan queue:listen
You will see layout as like bellow if queue is works:
You can also clear config cache using bellow command:
php artisan config:clear
Now we are ready to run our laravel 8 send mail using queue so run bellow command for quick run:
php artisan serve
Now you can open bellow URL on your browser:
localhost:8000/email-test
It will help you...
#Laravel 8
#Laravel