andriajah Wed Jul 2024 8 months ago

Contoh Laravel 11 Kirim Email dengan Notification

Mengirim Email dengan Notifikasi di Laravel 11: Panduan Lengkap

Laravel menyediakan sistem notifikasi yang powerful dan fleksibel untuk mengirim email, pesan ke berbagai channel, dan menjalankan tugas-tugas tertentu. Berikut panduan lengkap cara mengirim email dengan notifikasi di Laravel 11:

1. Membangun Notification Class:

  • Buat notification class menggunakan Artisan command:
Bash
php artisan make:notification UserRegisteredNotification

Ganti UserRegisteredNotification dengan nama yang sesuai dengan kebutuhan Anda, misalnya ResetPasswordNotification atau OrderConfirmationNotification.

  • Di dalam class notification, definisikan beberapa method penting:

    • via($notifiable): Menentukan channel pengiriman notifikasi. Dalam contoh ini, kembalikan array ['email'] untuk mengirim email.
    PHP
    public function via($notifiable)
    {
        return ['email'];
    }
    • to($notifiable): Menentukan alamat email tujuan notifikasi. Di sini, kembalikan email dari object $notifiable, misal dari model User.
    PHP
    public function to($notifiable)
    {
        return $notifiable->email;
    }
    • notify($notifiable): Digunakan untuk mendefinisikan apa yang harus dilakukan saat notifikasi dikirim. Di sini, Anda bisa membuat log, mengirim pesan ke Slack, atau melakukan tindakan lain.
    PHP
    public function notify($notifiable)
    {
        $this->email($notifiable);
    }

2. Membuat Mail Template:

  • Buat mail template menggunakan Artisan command:
Bash
php artisan make:mail UserRegisteredEmail

Ganti UserRegisteredEmail dengan nama yang sesuai, seperti ResetPasswordEmail atau OrderConfirmationEmail.

  • Di dalam file template (misalnya, resources/views/mail/user-registered-email.blade.php), desain konten email sesuai keinginan Anda. Gunakan Blade templating engine untuk membuat email yang dinamis dan personal.

    HTML
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Pendaftaran Akun Berhasil</title>
    </head>
    <body>
        <h1>Pendaftaran Akun Berhasil!</h1>
        <p>Halo {{ $user->name }},</p>
        <p>Terima kasih telah mendaftar di website kami.</p>
        <p>Silakan klik link berikut untuk verifikasi email Anda:</p>
        <a href="{{ route('verification.verify', ['id' => $user->id, 'hash' => $user->remember_token]) }}">{{ route('verification.verify', ['id' => $user->id, 'hash' => $user->remember_token]) }}</a>
        <p>Salam,</p>
        <p>Tim {{ config('app.name') }}</p>
    </body>
    </html>

3. Mengirimkan Notifikasi Email:

  • Di controller yang ingin mengirim notifikasi, gunakan method notify dari model yang dinotifikasi dan lewati object notifikasi yang ingin dikirim.

    PHP
    public function register(Request $request)
    {
        // ... (Proses registrasi)
    
        $user = User::create($request->all());
    
        // Kirim notifikasi email kepada user yang baru terdaftar
        $user->notify(new UserRegisteredNotification);
    
        return redirect('/home');
    }

4. Menyesuaikan Notifikasi:

  • Anda dapat membuat berbagai class notifikasi dan mail template untuk berbagai keperluan, seperti:
    • ResetPasswordNotification dan ResetPasswordEmail untuk notifikasi reset password.
    • OrderConfirmationNotification dan OrderConfirmationEmail untuk konfirmasi pesanan.
    • VerificationEmail dan VerificationEmail untuk verifikasi email.
  • Anda dapat menyesuaikan konten email dan channel notifikasi sesuai dengan kebutuhan Anda.
  • Laravel menyediakan berbagai channel notifikasi lain selain email, seperti database, SMS, dan Slack.

5. Pengaturan Email:

  • Pastikan Anda telah mengkonfigurasi email di Laravel (config/mail.php).
    • Atur driver email yang ingin digunakan (misalnya, SMTP, Mailgun, SendGrid).
    • Masukkan informasi kredensial email Anda.
  • Anda dapat menggunakan layanan email pihak ketiga seperti Mailgun atau SendGrid untuk meningkatkan deliverability email Anda.

Sumber Daya Tambahan:

laravel laravel 11