Pluginify

Masuk Daftar
Home > Blog > Laravel > Menggunakan Notification Email Laravel untuk Sistem Pemberitahuan Modern

Menggunakan Notification Email Laravel untuk Sistem Pemberitahuan Modern

Menggunakan Notification Email Laravel untuk Sistem Pemberitahuan Modern

Email merupakan salah satu metode pemberitahuan yang paling umum digunakan dalam aplikasi modern. Baik untuk verifikasi akun, reset password, invoice, laporan aktivitas, hingga notifikasi transaksi. Laravel menyediakan sistem Notification yang mendukung berbagai channel termasuk email, database, SMS, dan broadcast.

Fokus utama pada artikel ini adalah Notification Email Laravel, bagaimana cara kerjanya, konfigurasi, dan implementasi dalam skenario nyata aplikasi.

Konsep Notification Email di Laravel

Laravel Notification merupakan abstraksi yang memungkinkan pengembang mengirim pemberitahuan melalui berbagai channel. Channel email mendukung format markdown dan blade, memberikan kemampuan templating yang fleksibel.

Keunggulan Laravel Notification Email antara lain:

  • Mendukung mail markdown
  • Dapat dikirim via queue (asynchronous)
  • Mendukung template yang dapat dikustomisasi
  • Dapat dikombinasikan dengan event & listener
  • Terintegrasi dengan mail service populer

Dengan pendekatan terstruktur ini, pengiriman email menjadi lebih mudah dan konsisten.

Konfigurasi Mail Driver Laravel

Sebelum mengirim email, konfigurasi mail server harus benar. Pengaturan dapat dilakukan melalui file .env, contohnya:

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="noreply@domain.com"
MAIL_FROM_NAME="Aplikasi Saya"

Umumnya untuk development digunakan layanan seperti Mailtrap, Postal, atau Papercut. Untuk production bisa menggunakan:

  • Gmail SMTP
  • SendGrid
  • Mailgun
  • SES (Amazon)
  • Brevo (Sendinblue)
  • Postmark

Membuat Notification Email

Laravel menyediakan perintah artisan untuk membuat Notification:

php artisan make:notification InvoicePaid

Perintah tersebut akan membuat file di:

app/Notifications/InvoicePaid.php

Berikut contoh implementasinya:

namespace AppNotifications;

use IlluminateBusQueueable;
use IlluminateNotificationsNotification;
use IlluminateNotificationsMessagesMailMessage;

class InvoicePaid extends Notification
{
    use Queueable;

    protected $invoice;

    public function __construct($invoice)
    {
        $this->invoice = $invoice;
    }

    public function via($notifiable)
    {
        return ['mail'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
                    ->subject('Invoice Telah Dibayar')
                    ->greeting('Halo!')
                    ->line('Invoice Anda telah berhasil dibayar.')
                    ->line('Nomor Invoice: '.$this->invoice->number)
                    ->action('Lihat Invoice', url('/invoices/'.$this->invoice->id))
                    ->line('Terima kasih telah menggunakan layanan kami!');
    }
}

Pada contoh ini:

  • via() menentukan channel email
  • toMail() menentukan isi email

Mengirim Notification Email ke User

Notification dapat dikirim dengan metode notify().

Anda dapat mengirim notifikasi dari Controller:

$user = User::find(1);
$user->notify(new InvoicePaid($invoice));

Jika email berhasil, Laravel akan mengirimnya melalui mail driver yang sudah dikonfigurasi.

Menggunakan Mail Markdown untuk Tampilan Lebih Menarik

Laravel menyediakan sistem Mail Markdown agar email terlihat lebih profesional.

Buat notification markdown:

php artisan make:notification OrderShipped --markdown=emails.orders.shipped

File blade akan dibuat di:

resources/views/emails/orders/shipped.blade.php

Contoh isi markdown:

@component('mail::message')
# Pesanan Dikirim

Pesanan dengan nomor {{ $order->number }} telah dikirim.

@component('mail::button', ['url' => $url])
Lacak Pesanan
@endcomponent

Terima kasih,<br>
{{ config('app.name') }}
@endcomponent

Dengan cara ini, email terlihat jauh lebih baik dari sekadar plain text.

Mengirim Notification Email dengan Queue

Mengirim email secara synchronous dapat memperlambat proses. Karena itu, Laravel mendukung queue.

Cara mengaktifkan queue, pastikan Notification menggunakan trait:

use IlluminateContractsQueueShouldQueue;

Contoh:

class InvoicePaid extends Notification implements ShouldQueue
{
    // ...
}

Setelah itu, jalankan worker queue:

php artisan queue:work

Dengan cara ini, pengiriman email diproses di background dan aplikasi tetap responsif.

Menentukan Mail From Secara Dinamis

Anda dapat menimpa address pengirim dengan:

return (new MailMessage)
    ->from('billing@domain.com', 'Billing System')
    ->subject('Invoice Dibayar')
    ->line('Detail invoice...')

Ini berguna untuk memisahkan layanan seperti billing, support, dan no-reply.

Menggunakan Multiple Channels

Notification Laravel dapat mengirim ke banyak channel:

public function via($notifiable)
{
    return ['mail', 'database'];
}

Dengan ini, pemberitahuan tidak hanya terkirim lewat email tetapi juga tersimpan di database.

Kelebihan Notification Email dibanding Mail Mailable

Laravel memiliki dua sistem email:

  1. Notification
  2. Mailable

Notification cocok untuk:

  • Email singkat
  • Pemberitahuan otomatis
  • Multi channel (mail, sms, database)

Sedangkan Mailable lebih cocok untuk email komposisi kompleks (invoice besar, newsletter).

Kesimpulan

Notification Email Laravel memberikan pendekatan yang modern dan fleksibel dalam menangani pemberitahuan berbasis email. Melalui dukungan berbagai mail provider, format markdown, dan integrasi dengan queue, sistem notifikasi menjadi lebih efisien dan dapat diskalakan untuk kebutuhan production.

Dengan implementasi yang tepat, Notification Email dapat meningkatkan pengalaman pengguna, mendukung automatisasi, serta mempermudah proses pengembangan aplikasi berskala besar.

Baca Juga: Menggunakan Optimization Command Laravel untuk Performa Production

Pluginify
Pluginify