Header Ads

Header ADS

Laravel Send Bulk Mail Using Queue

 


Step 1: install laravel


Step 2:Change In .env File


MAIL_MAILER=smtp

MAIL_HOST=smtp.mailtrap.io

MAIL_PORT=2525

MAIL_USERNAME=your_username

MAIL_PASSWORD=your_passowrd

MAIL_ENCRYPTION=TLS


QUEUE_DRIVER=database


Step 3: Create Route


use App\Http\Controllers\SendMailController;


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


Step 4: Create Queue Table


php artisan queue:table


php artisan migrate​


Step 5:Create Controller and code


<?php


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

            ->delay(now()->addSeconds(2)); 


        dispatch($job);

        echo "Mail send successfully !!";

    }

}


Step 6: Create Job


php artisan make:job SendQueueEmail


<?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\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'])

                    ->subject($input['subject']);

            });

        }

    }

}



Step 7: Create Mail Blade


resources/views/mail/Test_mail.blade.php


Hi <br/>

This is Test Mail.<br />

Thank you !!


Step 8: php artisan queue:listen


========End==================================

No comments

Theme images by fpm. Powered by Blogger.