Pemula : Notifikasi Email Simpel: Mengirim Verifikasi Akun dengan Laravel Mail 3 Halaman

Bagi para pengembang pemula, memahami cara sistem mengirimkan email adalah langkah penting dalam membangun aplikasi yang profesional dan terpercaya.

Dalam panduan ini, kita akan belajar cara membangun fitur Notifikasi Email Simpel untuk verifikasi akun menggunakan Laravel Mail, yang dirancang secara praktis hanya dengan 3 halaman utama.

Kita akan mulai dari dasar, mulai dari konfigurasi teknis hingga memastikan pesan verifikasi mendarat dengan selamat di kotak masuk pengguna.

1. Buat Proyek Laravel Baru

laravel new email-bwa-tegar

Perintah “laravel new email-bwa-tegar” digunakan untuk membuat sebuah proyek Laravel baru dengan nama tersebut sehingga kita memiliki struktur aplikasi yang siap dipakai untuk melanjutkan proses pembuatan fitur Laravel Email.

Pilih sebagai berikut

Setelah menunggu lama lanjut pilih sebagai berikut

Atau kalau gagal pakai pembuatan Laravel di atas, bisa pakai Composer bila cara di atas tidak berhasil:

composer create-project laravel/laravel email-bwa-tegar

Perintah “composer create-project laravel/laravel email-bwa-tegar” digunakan untuk membuat proyek Laravel baru menggunakan Composer, sehingga seluruh file dan dependensi Laravel terunduh otomatis dan siap digunakan sebagai dasar pengembangan fitur Laravel Email.

Selanjutnya mulai masuk ke foldernya:

cd email-bwa-tegar/
code .

Hasil

Selanjutnya jalankan migrasi:

Selanjutnya buka terminal proyek kamu dan jalankan perintah ini

php artisan migrate
# Would you like to create it? (yes/no) [yes] Pilih Yes

Perintah “php artisan migrate” dijalankan untuk membuat seluruh tabel yang sudah didefinisikan dalam file migration agar database siap digunakan dalam proyek Laravel Email ini.

🚨 Sebelum migrasi pastikan database/PhpMyAdmin kalian sudah aktif atau bisa di akses ya.

Hasil

Selanjutnya jalankan server dengan cara jalankan perintah ini:

php artisan serve
# Lalu akses [<http://127.0.0.1:8000>]

Perintah “php artisan serve” digunakan untuk menjalankan server pengembangan Laravel sehingga aplikasi bisa langsung diakses melalui browser dan siap diuji selama proses pembuatan fitur Laravel Email.

Hasil

2. Siapkan Database

Pada tahap ini, kita mulai menyiapkan database yang akan menjadi tempat penyimpanan data sehingga proses Laravel Email dapat berjalan dengan baik dan terstruktur.

Buka file .env di proyek kamu, lalu sesuaikan bagian ini saja:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=email_bwa_tegar
DB_USERNAME=root
DB_PASSWORD=

Konfigurasi DB_CONNECTION hingga DB_PASSWORD tersebut digunakan untuk menghubungkan proyek Laravel ke database MySQL lokal sehingga aplikasi bisa menyimpan, membaca, dan menampilkan data yang nantinya akan Laravel Email.

Hasil

3. Tambah Kolom Verifikasi Email

Selanjutnya buka terminal proyek kamu dan jalankan perintah ini

php artisan make:migration add_verification_token_to_users_table

Hasil

Lalu masuk ke file 2026_01_15_045625_add_verification_token_to_users_table.php sesuai gambar hasil di atas dan isi migrationnya sebagai berikut:

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('verification_token')->nullable()->after('email_verified_at');
    });
}

public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('verification_token');
    });
}

Hasil

Selanjutnya buka terminal proyek kamu dan jalankan perintah ini:

php artisan migrate:fresh

Hasil

4. Setup Email (Mailtrap)

Edit .env

MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxxx
MAIL_PASSWORD=xxxx
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="Laravel Mail"

🛠️ CARA DAPATKAN DATA DI ATAS (STEP BY STEP)

1️⃣ Buka Mailtrap

👉 https://mailtrap.io

Hasil

2️⃣ Daftar / Login

  • Bisa pakai Google

Bila muncul seperti ini

✅ Pilih Email Sandbox, karena:

  • Kita hanya testing email
  • Email tidak benar-benar dikirim ke inbox Gmail
  • Email masuk ke dashboard Mailtrap
  • Aman untuk development & belajar Laravel

💯 100% cocok untuk proyek 3 halaman yang sedang kamu buat

🧭 LANGKAH SETELAH PILIH EMAIL SANDBOX

  • 1️⃣ Klik Email Sandbox
  • 2️⃣ Klik Continue
  • 3️⃣ Kamu akan masuk ke Inbox Sandbox

Hasil

  • 4️⃣ Cari menu SMTP Settings

Klik tombol “Start Testing” yang berada di bagian “Email Sandbox” seperti contoh gambar di atas yang ada gambar bug.

Lalu pilih Laravel 9+ seperti ini

  • 5️⃣ Copy:
    • Host
    • Port
    • Username
    • Password

👉 SALIN ke .env paling bawah di Laravel kalian

🧪 CARA TEST CEPAT (WAJIB)

Setelah setup, buka terminal proyek kamu dan jalankan perintah ini:

php artisan tinker

Lalu jalankan perintah ini juga di terminal kalian

Mail::raw('Test email', function ($m) {
$m->to('[email protected]')->subject('Test');
});

Hasil

➡️ Kalau muncul di Mailtrap inbox → AMAN

Caranya dengan kembali ke Mailtrap lagi dan nanti kalian akan melihat ini.

5. Buat Controller

Selanjutnya buka terminal proyek kamu dan jalankan perintah ini:

php artisan make:controller RegisterController

Isi RegisterController.php

use App\\Models\\User;
use App\\Mail\\VerifyEmail;
use Illuminate\\Http\\Request;
use Illuminate\\Support\\Facades\\Mail;
use Illuminate\\Support\\Str;

class RegisterController extends Controller
{
    public function index()
    {
        return view('register');
    }

    public function store(Request $request)
    {
        $request->validate([
            'email' => 'required|email|unique:users',
        ]);

        $token = Str::random(40);

        User::create([
		        'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt('password'),
            'verification_token' => $token,
        ]);

        Mail::to($request->email)->send(new VerifyEmail($token));

        return redirect('/email-sent');
    }

    public function verify($token)
    {
        $user = User::where('verification_token', $token)->firstOrFail();

        $user->update([
            'email_verified_at' => now(),
            'verification_token' => null,
        ]);

        return view('email-verified');
    }
}

Hasil

6. Buat Mailable

Selanjutnya buka terminal proyek kamu dan jalankan perintah ini

php artisan make:mail VerifyEmail

Isi VerifyEmail.php dengan cara buka file tersebut, lalu hapus isinya semua dan isi seperti ini (versi sederhana):

<?php

namespace App\\Mail;

use Illuminate\\Bus\\Queueable;
use Illuminate\\Mail\\Mailable;
use Illuminate\\Queue\\SerializesModels;

class VerifyEmail extends Mailable
{
    use Queueable, SerializesModels;

    public $token;

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

    public function build()
    {
        return $this->subject('Verifikasi Email')
                    ->view('email.verify');
    }
}

Hasil

7. View Email

Buat file baru bernama verify.blade.php di dalam folder resources/views/emails/ dan isi sebagai berikut:

<h2>Verifikasi Email</h2>
<p>Klik link berikut untuk verifikasi email:</p>

<a href="{{ url('/verify-email/'.$token) }}">
    Verifikasi Email
</a>

Hasil

8. Routes

Selanjutnya pergi ke routes/web.php dan isi dengan ini

use App\\Http\\Controllers\\RegisterController;

Route::get('/register', [RegisterController::class, 'index']);
Route::post('/register', [RegisterController::class, 'store']);

Route::get('/email-sent', function () {
    return view('email-sent');
});

Route::get('/verify-email/{token}', [RegisterController::class, 'verify']);

Hasil

9. Halaman Register

Buat file baru bernama register.blade.php di dalam folder resources/views/ dan isi sebagai berikut:

<form method="POST" action="/register">
    @csrf
    <h2>Register</h2>

    <input type="email" name="email" placeholder="Email" required>
    <input type="text" name="name" placeholder="Nama Lengkap" required>

    <button>Daftar</button>
</form>

10. Halaman Email Terkirim

Buat file baru bernama email-sent.blade.php di dalam folder resources/views/ dan isi sebagai berikut:

<h2>Email Terkirim</h2>
<p>Silakan cek email untuk verifikasi akun.</p>

11. Halaman Email Terverifikasi

Buat file baru bernama email-verified.blade.php di dalam folder resources/views/ dan isi sebagai berikut:

<h2>Email Terverifikasi</h2>
<p>Akun kamu sudah aktif.</p>

12. Menambahkan Route Baru

Selanjutnya pergi ke routes/web.php dan tambahkan di paling bawah dengan ini:

/* 🔽 TAMBAHKAN INI SAJA */
Route::get('/email/verified', function () {
    return view('email-verified');
})->name('email.verified');

Hasil

13. Memperbaiki Error

1️⃣ PERBAIKI User.php

Buka filenya lalu tambahkan verification_token ke $fillable seperti ini

protected$fillable = [
'name',
'email',
'password',
'verification_token',
];

Hasil

🧠 PENJELASAN SINGKAT (BIAR MANTAP)

Register
   ↓
Email terkirim → /email-sent
   ↓
User kliklink di email → /verify-email/{token}
   ↓
RegisterController @verify
   ↓
redirect ke /email/verified
   ↓
Halaman email-verified.blade.php

14. Tes Di Browser

Selanjutnya buka terminal proyek kamu dan jalankan perintah ini:

php artisan serve

Selanjutnya akses

<http://127.0.0.1:8000/>

Hasil

Selanjutnya masuk ke link berikut dan isi email apapun itu

<http://127.0.0.1:8000/register>

Hasil

Lalu kalau di mailtrap kalian muncul gini artinya berhasil

Lalu Klik link tersebut yaitu Verifikasi Email, maka hasilnya seperti berikut:

Penjelasan singkat kenapa tidak terkirim lewat email asli, itu karena kita menggunakan sandbox untuk testing yaitu kode ini di .env

MAIL_HOST=sandbox.smtp.mailtrap.io

Bukan yang ini 

MAIL_HOST=smtp.gmail.com

Jadi karena itu emailnya masuk ke mailtrap bukan email asli. Jadinya cocok untuk latihan

💡 SARAN BUAT BELAJAR (PALING AMAN)

👉 Tetap pakai Mailtrap dulu

👉 Fokus ke:

  • Alur
  • Route
  • Controller
  • Verifikasi email

Nanti kalau sudah paham, baru pindah ke email asli (production).

15. Rekomendasi Kelas BuildWithAngga

Jika kamu merasa materi di artikel ini sudah sangat membantu, bayangkan betapa pesatnya perkembangan skill kamu jika mempelajari proyek yang jauh lebih kompleks dan profesional!

Kami sangat merekomendasikan kamu untuk segera bergabung dalam kelas "Ebook Laravel 12 & SC React: Web Hospital & Doctor Appointment", di mana kamu akan belajar Laravel 12 secara mendalam dengan praktik langsung membangun backend API profesional menggunakan service-repository pattern, Sanctum middleware, hingga Spatie roles & permissions.

Tidak hanya itu, kamu akan mendapatkan source code frontend React TypeScript siap pakai yang terintegrasi langsung dengan Laravel, sehingga sangat cocok untuk dijadikan portofolio kerja atau bahkan langsung dijual ulang ke klien sebagai fondasi produk digital milikmu sendiri.

Kelas ini adalah yang terbaik bagi kamu yang suka belajar dengan cara menggali seluk-beluk masalah secara luas melalui teks dan ingin memiliki kontrol penuh atas kecepatan praktik tanpa harus menonton durasi video yang panjang.

Kamu akan mengerjakan proyek real-world sistem manajemen rumah sakit lengkap, mulai dari fitur CRUD, jadwal dokter, hingga sistem booking appointment yang sangat rapi dan berkualitas.

Ini adalah investasi paling berharga untuk menjadi developer ahli, jadi segera amankan aksesmu melalui tautan berikut: https://buildwithangga.com/kelas/ebook-laravel-12-sc-reactweb-hospital-doctor-appointment

16. Penutup & Kesimpulan

Selamat! Kamu baru saja berhasil membangun sistem verifikasi email yang fungsional menggunakan Laravel Mail. Meskipun terlihat sederhana, fitur ini adalah fondasi penting dalam menjaga keamanan data dan validitas pengguna di aplikasi kamu.

Dengan memahami alur pengiriman email, konfigurasi SMTP, hingga manajemen rute verifikasi, kamu telah selangkah lebih maju dalam menguasai ekosistem Laravel yang luas. Jangan ragu untuk terus bereksperimen, misalnya dengan mempercantik tampilan email menggunakan Markdown atau menambahkan sistem pengingat otomatis. Teruslah berkarya dan sampai jumpa di tutorial berikutnya!