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