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:
- Buka halaman GitHub Releases Mailpit.
- Pilih rilis terbaru yang ditandai sebagai Latest.
- Cari bagian Assets pada rilis tersebut.
- Untuk komputer Windows 64-bit dengan prosesor Intel atau AMD, unduh file
mailpit-windows-amd64.zip. - Jika komputer menggunakan Windows ARM 64-bit, pilih
mailpit-windows-arm64.zip. - Setelah file ZIP selesai diunduh, ekstrak isinya ke folder yang mudah diakses, misalnya
C:\tools\mailpit. - Pastikan file
mailpit.exetersedia 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:8025untuk antarmuka web Mailpit.127.0.0.1:1025untuk 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:
| Pengaturan | Nilai |
|---|---|
| SMTP Host | 127.0.0.1 |
| SMTP Port | 1025 |
| Encryption | None |
| Authentication | Off |
| SMTP Username | Kosong |
| SMTP Password | Kosong |
| From Email | user_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.