Testing SMTP Laravel di Localhost Menggunakan Mailpit Tanpa Email Sungguhan

Saat mengembangkan aplikasi web, kita sering perlu menguji fitur pengiriman email, seperti notifikasi pendaftaran pengguna, reset password, konfirmasi transaksi, dan pemberitahuan ketika pengguna melakukan suatu tindakan.

Masalahnya, menguji fitur tersebut tidak harus selalu menggunakan akun email sungguhan. Untuk pengembangan di localhost, kita bisa menggunakan SMTP server lokal yang menangkap email untuk keperluan pengujian.

Salah satu alat yang bisa digunakan adalah Mailpit. Dengan Mailpit, aplikasi dapat mengirim email melalui SMTP lokal, kemudian kita melihat hasilnya melalui browser tanpa harus mengirim email ke kotak masuk Gmail atau layanan email sungguhan.

Artikel ini membahas cara menjalankan Mailpit di Windows dan menggunakannya untuk menguji pengiriman email di Laravel. Konsep yang sama juga bisa diterapkan pada aplikasi web lain yang mendukung konfigurasi SMTP.

Apa Itu Mailpit?

Mailpit adalah alat untuk pengujian email yang menyediakan SMTP server dan antarmuka web untuk melihat email yang ditangkap.

Ketika aplikasi mengirim email ke SMTP server Mailpit, email tersebut akan ditampilkan di antarmuka web Mailpit. Dengan demikian, developer dapat memeriksa isi pesan, alamat pengirim, alamat penerima, subjek, dan konten email selama proses pengembangan.

Beberapa manfaat Mailpit untuk development antara lain:

  • Menguji fitur pengiriman email tanpa mengirim pesan ke penerima sungguhan.
  • Memeriksa email notifikasi yang dihasilkan aplikasi.
  • Menguji template email, termasuk format HTML.
  • Menguji email reset password dan konfirmasi transaksi.
  • Mengurangi risiko mengirim email percobaan kepada pengguna sungguhan.

Mailpit tidak memerlukan pembuatan akun email untuk alamat pengirim maupun penerima yang digunakan dalam pengujian lokal.

1. Download Mailpit untuk Windows

Mailpit tersedia secara gratis dan bersifat open source. Anda dapat mengunduh versi terbaru melalui halaman rilis resmi di GitHub.

Link download resmi: Mailpit Releases di GitHub

Ikuti langkah-langkah berikut:

  1. Buka halaman GitHub Releases Mailpit.
  2. Pilih rilis terbaru yang ditandai sebagai Latest.
  3. Cari bagian Assets pada rilis tersebut.
  4. Untuk komputer Windows 64-bit dengan prosesor Intel atau AMD, unduh file mailpit-windows-amd64.zip.
  5. Jika komputer menggunakan Windows ARM 64-bit, pilih mailpit-windows-arm64.zip.
  6. Setelah file ZIP selesai diunduh, ekstrak isinya ke folder yang mudah diakses, misalnya C:\tools\mailpit.
  7. Pastikan file mailpit.exe tersedia di folder hasil ekstraksi.

Mailpit menggunakan satu file executable sehingga Anda tidak perlu menjalankan installer seperti aplikasi Windows pada umumnya. Binary yang telah diekstrak siap dijalankan langsung. Cukup jalankan mailpit.exe untuk memulai antarmuka web dan layanan SMTP lokal.

2. Menjalankan Mailpit di Windows

Pastikan file mailpit.exe sudah tersedia di komputer Anda.

Buka Command Prompt (CMD), bukan PowerShell, kemudian masuk ke direktori tempat file mailpit.exe berada.

Jalankan perintah berikut:

mailpit.exe --listen 127.0.0.1:8025 --smtp 127.0.0.1:1025

Perintah tersebut menggunakan dua port:

  • 127.0.0.1:8025 untuk antarmuka web Mailpit.
  • 127.0.0.1:1025 untuk menerima koneksi SMTP dari aplikasi.

Biarkan jendela CMD tetap terbuka selama Mailpit digunakan.

Setelah Mailpit berjalan, buka browser dan akses alamat berikut:

http://localhost:8025

Halaman Mailpit akan menampilkan antarmuka untuk melihat email yang berhasil ditangkap.

Jika halaman tidak dapat dibuka, pastikan Mailpit masih berjalan dan port yang digunakan tidak sedang dipakai oleh aplikasi lain.

3. Menentukan Domain Lokal di Windows

Untuk pengujian, kita bisa menggunakan alamat email dengan domain lokal, misalnya wordpress.local.

Jika aplikasi WordPress atau aplikasi lain yang sedang dikembangkan menggunakan domain tersebut, Windows dapat diarahkan agar domain lokal mengarah ke komputer sendiri melalui file hosts.

File hosts Windows berada di lokasi:

C:\Windows\System32\drivers\etc\hosts

Buka Notepad sebagai Administrator, kemudian buka file tersebut. Tambahkan baris berikut:

127.0.0.1 wordpress.local

Simpan perubahan.

Sekarang, Windows dapat mengarahkan permintaan ke wordpress.local menuju alamat loopback komputer lokal.

Catatan: Pengaturan hosts ini digunakan untuk resolusi nama domain lokal, bukan untuk membuat akun email atau mengonfigurasi SMTP. Jika aplikasi Laravel Anda menggunakan localhost dan tidak membutuhkan domain khusus, langkah ini sebenarnya tidak wajib.

4. Mengatur SMTP Aplikasi

Mailpit tidak mengharuskan kita membuat akun pengguna email. Aplikasi cukup diarahkan ke SMTP server lokal yang dijalankan oleh Mailpit.

Gunakan konfigurasi berikut:

PengaturanNilai
SMTP Host127.0.0.1
SMTP Port1025
EncryptionNone
AuthenticationOff
SMTP UsernameKosong
SMTP PasswordKosong
From Emailuser_bebas_1@wordpress.local

Alamat pengirim di atas hanya contoh. Anda bisa menggunakan alamat lain sesuai kebutuhan pengujian.

Perlu diperhatikan bahwa SMTP host harus menunjuk ke alamat dan port Mailpit, sedangkan alamat pengirim digunakan sebagai identitas pengirim pada email yang dibuat aplikasi.

Konfigurasi SMTP di Laravel

Pada aplikasi Laravel, buka file .env di direktori utama proyek.

Tambahkan atau sesuaikan konfigurasi berikut:

MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="user_bebas_1@wordpress.local"
MAIL_FROM_NAME="${APP_NAME}"

Konfigurasi tersebut mengarahkan Laravel untuk mengirim email melalui SMTP Mailpit di komputer lokal, tanpa autentikasi SMTP dan tanpa enkripsi TLS.

Setelah mengubah .env, jalankan perintah berikut dari direktori proyek Laravel:

php artisan config:clear

Perintah tersebut membersihkan cache konfigurasi Laravel agar perubahan konfigurasi dapat dibaca kembali.

Jika Anda menggunakan konfigurasi cache di lingkungan development, hindari menjalankan config:cache kembali sebelum memastikan konfigurasi yang digunakan sudah benar.

5. Mengirim Email Percobaan

Setelah Mailpit berjalan dan konfigurasi Laravel selesai, kita bisa menguji fitur pengiriman email.

Gunakan alamat email penerima berikut sebagai contoh:

user_bebas_2@wordpress.local

Alamat tersebut tidak perlu didaftarkan ke layanan email. Untuk pengujian lokal, cukup gunakan alamat itu sebagai penerima pesan yang dikirim melalui Mailpit.

Misalnya, aplikasi Anda memiliki fitur notifikasi yang mengirimkan email ketika pengguna mendaftar atau melakukan transaksi. Jalankan fitur tersebut seperti biasa.

Jika konfigurasi SMTP sudah benar, Laravel akan mengirim pesan ke Mailpit, bukan ke kotak masuk email sungguhan.

Buka kembali:

http://localhost:8025

Email yang berhasil ditangkap akan muncul di daftar pesan Mailpit. Klik email tersebut untuk memeriksa alamat pengirim, alamat penerima, subjek, dan isi pesan.

Jika email tidak muncul, periksa kembali konfigurasi .env, pastikan Mailpit berjalan, dan periksa log error Laravel.

6. Apakah Mailpit Bisa Digunakan Tanpa Akun Email?

Ya. Untuk pengujian SMTP lokal, Mailpit dapat menerima email tanpa mengharuskan developer membuat akun email sungguhan.

Contohnya:

  • Pengirim: user_bebas_1@wordpress.local
  • Penerima: user_bebas_2@wordpress.local
  • SMTP host: 127.0.0.1
  • SMTP port: 1025

Kedua alamat email tersebut hanya digunakan sebagai alamat pengirim dan penerima dalam pesan yang diuji. Mailpit menangkap pesan melalui SMTP dan menampilkannya di antarmuka web.

Namun, ada perbedaan penting: Mailpit bukan layanan email produksi. Konfigurasi SMTP lokal ini ditujukan untuk development dan pengujian, bukan untuk mengirim email kepada pelanggan sungguhan.

7. Apakah Mailpit Hanya Bisa Digunakan untuk Laravel?

Tidak. Mailpit dapat digunakan oleh berbagai aplikasi yang mendukung pengiriman email melalui SMTP.

Selain Laravel, pendekatan yang sama dapat diterapkan pada aplikasi PHP, framework web lainnya, maupun aplikasi yang menyediakan konfigurasi SMTP.

Prinsipnya sederhana: selama aplikasi dapat diarahkan ke SMTP host 127.0.0.1 dengan port 1025 pada lingkungan yang sama, aplikasi tersebut dapat diuji menggunakan Mailpit.

Jika aplikasi berjalan di Docker, virtual machine, atau komputer lain dalam jaringan lokal, alamat 127.0.0.1 mungkin tidak menunjuk ke komputer tempat Mailpit berjalan. Dalam kondisi tersebut, host SMTP perlu disesuaikan dengan topologi jaringan dan konfigurasi aksesnya.

Kesimpulan

Mailpit mempermudah pengujian email selama pengembangan aplikasi. Kita tidak perlu membuat akun email sungguhan untuk menguji notifikasi, reset password, konfirmasi transaksi, atau fitur pengiriman email lainnya.

Langkah dasarnya adalah menjalankan Mailpit, mengarahkan konfigurasi SMTP aplikasi ke 127.0.0.1:1025, kemudian memeriksa email yang ditangkap melalui http://localhost:8025.

Dengan cara ini, developer Laravel dan aplikasi web lainnya dapat menguji fitur email secara lokal dengan lebih praktis, sekaligus mengurangi risiko email percobaan terkirim kepada pengguna sungguhan.