Laravel 5.3 Send Mail with Queue

Pembukaan

Halo teman-teman, kembali lagi di tutorial saya. Kali ini, kita akan membahas tutorial bagaimana cara manggunakan queue untuk mengirim e-mail pada Laravel 5.3.

Tentang Queue

Jadi, queue sendiri adalah satu fitur yang bisa membuat kita “menunda” sebuah proses yang memakan waktu yang cukup lama untuk menyelesaikannya karena cukup berat, sehingga dapat meningkatkan kecepatan request web kita dimana, request yang dilakukan bisa memberi response lebih cepat daripada jika proses dilakukan dengan synchronously.

Itu sekilas tentang queue, jadi di tutorial kali ini, kita akan coba mengimplementasikan queue dengan cara mengirim e-mail. Untuk tutorial kali ini, kita akan menggunakan mailtrap.io. Untuk tutorial tentang mengirim e-mail menggunakan mailtrap.io bisa dilihat disini. Mari langsung saja kita pelajari.

 

Di tutorial kali ini, kita akan menggunakan Laravel 5.3. Jika Anda belum menginstall Laravel versi 5.3. Silahkan install dengan menggunakan composer dengan perintah

composer create-project –prefer-dist laravel/laravel laravel5.3

 

  1. Pertama, mari kita setting dulu konfigurasi dari queue kita. Disini, kita menggunakan driver database sebagai penyimpan queue kita. Jadi, mari kita edit file konfigurasi kita di file .envuntitled11
  2. Kemudian, mari kita buat table jobs yang akan menampung queue kita.
    • Di terminal/command prompt ketikkan. Perintah ini akan membuat migration untuk table jobs kita secara otomatisphp artisan queue:table
    • Setelah itu, kita migrate saja dengan perintahphp artisan migrate
  3. Setelah itu, mari kita atur routes kita terlebih dahulu.untitled6
    • Seperti yang bisa kita lihat, kita mempunya beberapa routing disini, diantaranya:
      • Untuk routing pertama kita, kita akan memberi sebuah form yang bisa diisi untuk mengirim e-mail.
      • Lalu routing untuk mengirim e-mail itu sendiri
      • Dan yang terakhir adalah tampilan setelah pengiriman e-mail selesai di proses.
  4. Sekarang, mari kita buat form nya.untitled4
    • Kita buat saja form simple yang berisikan field:
      • To: untuk siapa email ditujukan
      • Subject: subject dari e-mail yang akan dikirim
      • Mail_message: isi dari e-mail yang akan dikirim
  5. Setelah itu, mari kita buat class untuk mail kita. Untuk membuat mailable class, kita bisa menggunakan perintah php artisan. Ketikkan perintah ini di terminal/cmd.

    php artisan make:mail SendEmail

    • Setelah itu, mailable class kita sudah terbuat yang terletak di app/Mail dan sudah siap untuk kita gunakan
  6. Setelah itu, mari kita edit file tersebut dengan kebutuhan kitauntitled2
    • Pertama, mari kita tambahkan variable $mail_message dan $subject yang akan kita pakai dengan mendeklarasikannya.
    • Lalu, pada function __construct(), kita set nilai dari variable tersebut.
    • Di function build lah kita akan mengirim emailnya.
      • $this->view(’email’) adalah view yang akan digunakan untuk mengirim e-mail
      • subject adalah untuk menyertakan subject dari e-mail kita
  7. Kemudian, mari kita buat file view dari email kita (email.blade.php).untitled3
    • Di file tersebut, cukup simple saja, kita hanya menampilkan isi message yang diinputkan oleh user dan telah kita sertakan pada parameter SendEmail.
    • Catatan:
      • Kita bisa langsung menggunakan variable yang ada di mailable class kita pada file view kita.
  8. Lalu, kita buat juga tampilan ketika request pada pengiriman e-mail kita telah selesai (viewAfter.blade.php).untitled5
    • Disini, kita akan memberi notifikasi bahwa e-mail telah dikirim kepada penerima yang telah diinputkan sebelumnya.
  9. Nah, sekarang kita akan mengirim e-mail nya di EmailController kita.
    1. Pertama, mari kita coba kirimkan tanpa menggunakan queueuntitled1
      1. Kita catat proses nya dengan Log.
        1. Untuk menggunakannya, kita harus use class tersebut dulu

          use Illuminate\Support\Facades\Log;

        2. Log ini akan tercatat di storage/logs/laravel.log. Jadi nanti kita akan mencek nya di file tersebut.
      2. Disini, kita masih menggunakan function send untuk mengirim e-mail kita secara synchronously.
    2. Sekarang, baru kita coba ganti dengan menggunakan queue.untitled9
      1. Disini, kita mengganti function send untuk mengirim email kita dengan function queue yang akan menambahkan proses ini ke table jobs pada database kita.
      2. Kemudian, kita harus mentrigger proses tersebut dengan mengetikkan perintah ini di terminal/cmd kita.

        php artisan queue:listen

  10. Seperti yang bisa kita lihat, e-mail nya sama-sama terkirim, tetapi dengan kecepatan response yang berbeda pada web kita. Mari kita coba cek di log yang tadi telah kita catat.
    1. Dengan queueuntitled12
    2. Tanpa queueuntitled13
    3. Bisa dilihat dengan jelas kan perbedaannya? Jadi, dengan queue, kita bisa meningkatkan request dari web kita dengan menaruh proses-proses yang berat atau memakan waktu di queue dan membiarkannya berjalan di belakang layar. Begitula kira-kira cara kerja queue.
  11. HASIL:
    untitled7
    Form yang digunakan
    untitled8
    View setelah proses e-mail selesai
    untitled10
    Hasil pada mailtrap.io

     

Kesimpulan

Dengan queue, kita bisa mengingkatkan request dari web kita dengan tidak membebankan nya pada proses-proses yang berat dan memakan waktu dengan cara membuatnya berjalan di belakang layar.

Oke teman-teman, terima kasih karena telah mengikuti tutorial kali ini bersama saya. Semoga dapat bermanfaat bagi teman-teman. Terima kasih! 🙂

Leave a comment