pikolo Tue Aug 2021 1 year ago

Tutorial Mengirim Email Menggunakan Queue di Laravel

Laravel 8 Contoh Mengirim email menggunakan Queque. Tutorial ini akan memandu Anda sepenuhnya tentang cara mengirim email menggunakan Queue Job di aplikasi laravel 8. Dan Anda akan belajar langkah demi langkah cara mengirim email di laravel 8 menggunakan pekerjaan antrian dengan driver smtp seperti Mailgun, Postmark, Amazon SES, office365, gmail dan sendmail.

Queque mail adalah  direktori yang menyimpan data dan mengontrol file untuk pesan email yang dikirimkan oleh perintah sendmail . Jika demikian, pesan email harus disimpan sementara. Jika host jarak jauh tidak menjawab permintaan untuk koneksi email, sistem email mengantri pesan dan mencoba lagi nanti.

Terkadang, proses pengiriman Mail membutuhkan waktu. Dan Anda tidak ingin menunggu untuk mengirim email atau proses lain saat memuat proses sisi server. Jadi, Anda dapat menggunakan queue job untuk mengirim email di aplikasi laravel 8. Jadi, laravel 8 ini mengirim email menggunakan contoh tutorial queue akan membuat queue job yang sederhana dan mudah dengan driver database untuk pengiriman email test.

Perhatikan bahwa, Anda dapat menggunakan beberapa detail driver SMTP seperti Mailgun, Postmark, Amazon SES, office365, gmail, dan sendmail dalam file .env untuk mengirim email di laravel 8.

Cara Mengirim Email menggunakan Antrian di Laravel 8

Langkah 1 – Instal Aplikasi Laravel 8

Pada langkah ini, gunakan perintah berikut untuk menginstal atau mengunduh aplikasi laravel 8:

composer create-project --prefer-dist laravel/laravel blog

Langkah 2 – Konfigurasi SMTP & Database

Pada langkah ini, Anda perlu mengonfigurasi detail smtp di file .env seperti berikut:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db name
DB_USERNAME=db user name
DB_PASSWORD=db password

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
MAIL_USERNAME=Add your user name here
MAIL_PASSWORD=Add your password here
MAIL_ENCRYPTION=tls 

Langkah 3 – Buat Mailable Class

Pada langkah ini, gunakan perintah yang diberikan di bawah ini untuk membuat mailable NotifyMail class:

php artisan make:mail NotifyMail
<?php
 
namespace App\Mail;
 
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
 
class NotifyMail 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('view.name');
    }
}

Dengan nama apa pun Anda akan membuat template email. Yang ingin Anda kirim. Jangan lupa untuk menambahkan nama template email di class build dari class notifymail yang dibuat di atas.

return $this->view('view.name');
to
return $this->view('emails.demoMail');

Pada langkah selanjutnya, Buat template email bernama demoMail.blade.php di dalam direktori resources/views/emails. Itu sebabnya telah menambahkan email nama tampilan.

Langkah 4 – Tambahkan Rute Kirim Email

Pada langkah ini, buka /web.php , jadi arahkan ke direktori route . Dan kemudian tambahkan route berikut untuk mengirim email:

Route::get('email-test', function(){

$details['email'] = '[email protected]';

dispatch(new App\Jobs\SendEmailJob($details));

dd('done');
});

Langkah 5 – Buat Direktori Dan View Blade Mail

Pada langkah ini, buat email nama direktori di dalam direktori resources/views. Kemudian buat file view blade demoMail.blade.php di dalam direktori resources/views/emails. Dan perbarui kode berikut ke dalamnya:

<!DOCTYPE html>
<html>
<head>
 <title>Laravel 8 Send Email Example</title>
</head>
<body>
 
 <h1>This is test mail from Medikre.com</h1>
 <p>Laravel 8 send email example</p>
 
</body>
</html> 

Langkah 6 – Konfigurasi Mail Queue

Pada langkah ini, konfigurasi pada driver queue. Jadi buka file .env dan tentukan driver queue database pada file ".env" seperti berikut:

QUEUE_CONNECTION=database

Kemudian buka terminal dan jalankan perintah berikut untuk tabel database queue:

php artisan queue:table

Selanjutnya, migrasi tabel ke database:

php artisan migrate

Langkah 7 – Bangun Job Queue Untuk Mengirim Email

Dalam langkah ini. buat job queque menggunakan perintah berikut:

php artisan make:job SendEmailJob

Kemudian buka file SendEmailJob.php yang ditempatkan pada direktori “app/Jobs”. Dan perbarui kode queue mail berikut ke dalamnya:

<?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\SendEmailTest;
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 SendEmailTest();
        Mail::to($this->details['email'])->send($email);
    }
}

Langkah 8 – Jalankan Server Development

Pada langkah ini, gunakan perintah PHP artisan serve ini untuk memulai server Anda secara lokal:

php artisan serve

Kemudian buka browser dan jalankan URL berikut di atasnya:

http://127.0.0.1:8000/email-test

Cara mengirim email menggunakan queue pada contoh Laravel 8. Dalam tutorial ini, Anda telah belajar cara membuat class mailable di laravel 8. Dan menggunakan class ini tentang cara mengirim email di laravel 8.

laravel laravel 8 laravel queue example tutorial laravel mail queue tutorial