ahmadajah03 Wed Feb 2021 1 year ago

Cara Mengirim Email Massal Massal Menggunakan Queue di Laravel 8

Dalam contoh ini kita akan melihat bagaimana mengirim email menggunakan antrian di laravel 8.

Queue Laravel digunakan untuk mengirim email massal dengan proses latar belakang, seperti yang kita ketahui jika kita mengirim surat tunggal dalam aplikasi laravel itu berfungsi dengan baik tanpa memakan waktu lebih lama tetapi jika Anda ingin mengirim banyak email di laravel maka itu akan memakan waktu terlalu lama dan Anda juga tidak dapat melakukan operasi apa pun selama periode waktu ini.

Jadi, jika Anda ingin mengirim email massal maka Anda perlu menggunakan Queue laravel menggunakan Queue kita bisa mengirim banyak email di laravel dengan proses latar belakang. mari kita mulai dan ikuti langkah-langkah di bawah ini untuk cara mengirim email massal di laravel.

Langkah 1: Ubah File .env

Kita perlu mengubah konfigurasi queue yang diatur dalam file .env seperti di bawah ini, di sini kita telah menggunakan mailtrap.io.

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

 Langkah 2: Buat Route

Pada langkah ini kita akan membuat route untuk mengirim email massal menggunakan queue.

use App\Http\Controllers\SendMailController;

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

Langkah 3: Buat Tabel Queue

Sekarang, kita akan membuat tabel 'jobs' di database, jadi salin perintah di bawah ini dan jalankan di terminal Anda.

php artisan queue:table

php artisan migrate‚Äč

Langkah 4 : Buat Controller 

Pada langkah ini kita akan membuat SendMailController  dan menambahkan kode di bawah ini.

<?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 !!";
    }
}

Langkah 5: Buat Job

Sekarang, kita perlu membuat SendQueueEmail.php file di app\Jobs folder menggunakan perintah di bawah ini di terminal Anda dan salin kode di bawah ini. 

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']);
            });
        }
    }
}

Langkah 6: Buat Mail Blade

Pada langkah ini, kita akan membuat file mail blade di resources/views/mail/Test_mail.blade.php dan menulis tambahkan konten email di bawah ini.

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

Dan jalankan perintah di bawah ini di terminal Anda untuk mengirim surat secara manual.

php artisan queue:listen

 

send email massal laravel send email laravel laravel laravel queue example