Implementasi Sistem Notifikasi Email untuk Registrasi Pengguna Baru di Laravel 10

Oleh Jafaruddin Ilham di 25 Sep 2025 | 21:00
Jafaruddin Ilham

Jafaruddin Ilham

Siswa
Postingan: 2
Anggota sejak: 9 Sep 2025

PENGENALAN

Kesan pertama sebuah aplikasi sangatlah penting. Mengirim email selamat datang secara otomatis kepada pengguna baru adalah standar industri untuk memberikan sambutan yang profesional sekaligus mengkonfirmasi keberhasilan registrasi.


Dalam eksplorasi Laravel 10 kali ini, kita akan memanfaatkan fitur Notifikasi bawaan untuk membangun fungsionalitas tersebut. Kita akan membedah langkah-langkah praktis untuk mengkonfigurasi pengiriman email, membuat template pesan, dan memicu notifikasi ini secara otomatis setiap kali ada pengguna baru yang mendaftar. Tujuannya adalah untuk menciptakan sistem sambutan yang andal dan otomatis, langsung dari registrasi ke kotak masuk pengguna.


ALUR KERJA

Alur kerjanya akan seperti ini:

1. Konfigurasi Email: Kita akan mengatur Laravel agar bisa mengirim email. Kita akan menggunakan Mailtrap, sebuah layanan gratis yang sempurna untuk testing email selama pengembangan.

2. Setup Registrasi: Kita akan menggunakan starter kit Laravel Breeze untuk membuat sistem registrasi dan login secara instan.

3. Buat Notifikasi: Kita akan membuat class notifikasi khusus untuk email selamat datang.

4. Kirim Notifikasi: Kita akan memodifikasi controller registrasi agar secara otomatis mengirim notifikasi ini setiap kali ada pengguna baru yang berhasil mendaftar.

5. Testing: Kita akan mendaftar sebagai pengguna baru dan melihat email notifikasinya masuk ke Mailtrap.



Langkah 1: Konfigurasi Laravel untuk Mengirim Email

Sebelum Laravel bisa mengirim email, kita harus memberitahunya cara mengirimnya. Selama pengembangan, sangat tidak disarankan menggunakan server email asli (seperti Gmail) karena Anda bisa tidak sengaja mengirim email spam. Solusinya adalah Mailtrap.


a. Daftar Akun Mailtrap

Buka Mailtrap.io dan daftar untuk akun gratis.

Setelah masuk, Anda akan melihat "My Inbox". Klik inbox tersebut.

Selanjutnya pilih API/SMPTI, Transactional Stream Di bawah tab "Integrations", gunakan kredensial SMPTI yang akan digunakan berikutnya (contoh program sudah ada di website mailtrap)


b. Konfigurasi File .env

Buka file .env di root proyek Laravel Anda dan temukan bagian MAIL_. Ganti isinya dengan konfigurasi yang Anda dapatkan dari Mailtrap. Akan terlihat seperti ini:


   MAIL_MAILER=smtp

   MAIL_HOST=sandbox.smtp.mailtrap.io

   MAIL_PORT=2525

   MAIL_USERNAME=xxxxxxxxxxxxxx  // <-- Ganti dengan username Anda dari Mailtrap

   MAIL_PASSWORD=xxxxxxxxxxxxxx  // <-- Ganti dengan password Anda dari Mailtrap

   MAIL_ENCRYPTION=tls

   MAIL_FROM_ADDRESS="hello@demomailtrap.co"

   MAIL_FROM_NAME="${APP_NAME}"


Simpan file .env. Sekarang, Laravel tahu cara mengirim email melalui Mailtrap.


Langkah 2: Setup Cepat Sistem Registrasi

di terminal lakukan: 

composer require laravel/breeze --dev

php artisan breeze:install

npm install

npm run dev

php artisan migrate


Lankah 3: Membuat Class Notifikasi

Jalankan perintah artisan berikut di terminal:

php artisan make:notification NewUserWelcome


Perintah ini akan membuat file baru di app/Notifications/NewUserWelcome.php. Buka file tersebut dan mari kita modifikasi.


<?php


namespace App\Notifications;


use Illuminate\Bus\Queueable;

use Illuminate\Contracts\Queue\ShouldQueue;

use Illuminate\Notifications\Messages\MailMessage;

use Illuminate\Notifications\Notification;

use App\Models\User; // Import model User


class NewUserWelcome extends Notification

{

    use Queueable;


    public $user;


    /**

     * Create a new notification instance.

     */

    public function __construct(User $user)

    {

        $this->user = $user;

    }


    /**

     * Get the notification's delivery channels.

     *

     * @return array<int, string>

     */

    public function via(object $notifiable): array

    {

        // Kita hanya akan mengirim lewat channel 'mail'

        return ['mail'];

    }


    /**

     * Get the mail representation of the notification.

     */

    public function toMail(object $notifiable): MailMessage

    {

        // Di sinilah kita mendefinisikan isi emailnya

        return (new MailMessage)

                    ->subject('Selamat Datang di Aplikasi Kami!')

                    ->greeting('Halo, ' . $this->user->name . '!')

                    ->line('Terima kasih telah mendaftar di platform kami. Kami sangat senang Anda bergabung.')

                    ->action('Mulai Jelajahi', url('/dashboard'))

                    ->line('Semoga Anda menikmati pengalaman menggunakan aplikasi kami!');

    }

}


Langkah 4: Memicu Notifikasi Saat Registrasi

Langkah terakhir adalah memanggil notifikasi ini saat seorang pengguna berhasil mendaftar. Karena kita menggunakan Breeze, logika registrasi ada di app/Http/Controllers/Auth/RegisteredUserController.php.


Buka file tersebut dan cari method store. Kita akan menambahkan satu baris kode di dalamnya.

<?php


namespace App\Http\Controllers\Auth;


use App\Http\Controllers\Controller;

use App\Models\User;

use Illuminate\Auth\Events\Registered;

use Illuminate\Http\RedirectResponse;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Auth;

use Illuminate\Support\Facades\Hash;

use Illuminate\Validation\Rules;

use Illuminate\View\View;


// 1. Import class notifikasi kita

use App\Notifications\NewUserWelcome;


class RegisteredUserController extends Controller

{

    /**

     * Display the registration view.

     */

    // ... (method create tidak perlu diubah)


    /**

     * Handle an incoming registration request.

     *

     * @throws \Illuminate\Validation\ValidationException

     */

    public function store(Request $request): RedirectResponse

    {

        $request->validate([

            'name' => ['required', 'string', 'max:255'],

            'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class],

            'password' => ['required', 'confirmed', Rules\Password::defaults()],

        ]);


        $user = User::create([

            'name' => $request->name,

            'email' => $request->email,

            'password' => Hash::make($request->password),

        ]);


        event(new Registered($user));


        // 2. KIRIM NOTIFIKASI DI SINI!

        // Setelah user berhasil dibuat, kita kirim notifikasi padanya.

        $user->notify(new NewUserWelcome($user));


        Auth::login($user);


        return redirect(route('dashboard', absolute: false));

    }

}


Selesai! Hanya itu yang perlu kita tambahkan. use Notifiable sudah otomatis ada di model User, jadi kita bisa langsung menggunakan method $user->notify(...).


Langkah 5: Waktunya Testing!

Pastikan server pengembangan Anda berjalan (php artisan serve).

Pastikan Mailtrap inbox Anda terbuka di tab browser lain.

Buka halaman registrasi aplikasi Anda (http://127.0.0.1:8000/register).

Isi formulir dengan data pengguna baru (misal: Budi, budi@example.com, password).

Klik tombol "Register".

cek email apakah mendapat notifikasi (pastikan email yang sama dengan yang di register)

jika berhasil akan seperti yang ada di lampiran

25 Sep 2025 | 21:00
0 Suka

Laporkan

Silakan jelaskan laporan secara singkat dan jelas.