Lewati ke isi

Website & Domain

Kenapa Formulir Kontak WordPress Tidak Mengirim Email?

Formulir kontak WordPress tampak berhasil, tapi email tak pernah masuk? Kenali penyebabnya, dari fungsi mail() PHP sampai alamat From, dan solusi SMTP.

Terbit 5 menit baca

Jawaban singkat

Secara bawaan WordPress mengirim email lewat fungsi mail() PHP tanpa login SMTP, sehingga mudah ditolak atau masuk spam. Penyebab lain adalah alamat From yang bukan domain sendiri serta SPF atau DKIM yang belum diatur. Solusi paling andal adalah plugin SMTP dengan email domain sendiri.

Daftar isi
  1. Bagaimana WordPress mengirim email?
  2. Penyebab yang paling sering ditemukan
  3. Bagaimana cara memastikan sumber masalahnya?
  4. Solusi paling andal: kirim lewat SMTP
  5. Langkah lanjutan setelah SMTP terpasang
  6. Bagaimana kalau website ada di VPS?
  7. Pertanyaan yang sering diajukan

Jawaban singkatnya: WordPress secara bawaan mengirim email lewat fungsi mail() milik PHP, tanpa login ke server email. Email seperti ini mudah ditolak, tertahan, atau masuk spam, apalagi bila alamat pengirimnya tidak cocok dengan domain website.

Kenapa ini penting? Formulir kontak sering menjadi pintu utama calon pelanggan. Pengunjung melihat pesan "Terima kasih, pesan sudah terkirim", lalu menunggu balasan yang tidak pernah datang karena pesannya tidak pernah sampai ke kotak masukmu. Kamu kehilangan prospek tanpa pernah tahu.

Bagaimana WordPress mengirim email?

Semua email dari WordPress, baik dari formulir kontak, WooCommerce, maupun reset password, lewat fungsi wp_mail(). Fungsi ini memakai pustaka PHPMailer, dan bila tidak diatur lain, mengirim memakai fungsi mail() PHP di server hosting.

Masalahnya, mail() menyerahkan email ke program pengirim lokal di server tanpa autentikasi akun. Hasilnya sangat bergantung pada konfigurasi hosting. Di sebagian server berjalan lancar, di server lain diblokir, dibatasi, atau email keluar tanpa tanda tangan DKIM sehingga dicurigai penerima.

Penyebab yang paling sering ditemukan

  • Fungsi mail() dibatasi atau dimatikan. Sebagian hosting dan banyak VPS tidak menjalankan layanan pengirim email lokal, atau sengaja mematikannya untuk mencegah spam.
  • Alamat From memakai email pengunjung. Formulir diatur agar email "dari" alamat Gmail pengunjung. Server penerima melihat email dari domain gmail.com yang dikirim server lain, sehingga gagal pemeriksaan SPF dan DMARC.
  • Alamat From memakai domain yang tidak ada akunnya. Misalnya wordpress@domainkamu.com yang tidak pernah dibuat, atau alamat yang tidak tercakup SPF.
  • SPF, DKIM, atau DMARC domain belum diatur. Panduannya ada di SPF, DKIM, DMARC agar email tidak masuk spam.
  • Email penerima ada di layanan lain. Website di hosting A, email kantor di layanan B. Server hosting kadang menganggap domain itu lokal dan mencoba mengantarkan ke kotak surat di server sendiri, bukan ke server email yang sebenarnya.
  • Batas kirim hosting terlampaui, misalnya karena formulir dibanjiri spam bot.
  • Salah ketik alamat tujuan di pengaturan plugin formulir.

Bagaimana cara memastikan sumber masalahnya?

Lakukan pengecekan berurutan agar tidak menebak-nebak:

  1. Periksa folder Spam di kotak masuk tujuan, termasuk karantina bila memakai email perusahaan.
  2. Coba fitur Lupa password di halaman login WordPress dengan akun admin. Kalau email reset juga tidak datang, masalahnya ada di pengiriman email WordPress secara umum, bukan di plugin formulir.
  3. Pasang plugin pencatat email (email log) untuk melihat apakah WordPress benar-benar mencoba mengirim, dan apakah ada pesan error.
  4. Periksa pengaturan formulir: alamat tujuan, alamat From, dan Reply-To.
  5. Tanyakan ke penyedia hosting apakah fungsi mail() diizinkan dan berapa batas kirim per jamnya.

Solusi paling andal: kirim lewat SMTP

Cara yang paling banyak direkomendasikan adalah membuat WordPress mengirim email lewat SMTP dengan login akun, persis seperti aplikasi email di laptop. Caranya dengan memasang plugin SMTP seperti WP Mail SMTP, FluentSMTP, atau Post SMTP, lalu mengisi data server.

PengaturanIsi yang disarankan
From emailAlamat nyata di domain sendiri, misalnya website@domainkamu.com
From nameNama usaha atau "Formulir Website"
SMTP hostServer email dari penyedia email atau hosting
Port dan enkripsi465 dengan SSL/TLS, atau 587 dengan TLS/STARTTLS
AutentikasiAktif, username alamat email lengkap dan password-nya
Reply-To di formulirAlamat email pengunjung, agar tombol balas langsung ke mereka

Kunci utamanya ada di kombinasi From dan Reply-To. Alamat From selalu memakai email di domainmu sendiri, sedangkan email pengunjung diletakkan di Reply-To. Dokumentasi Contact Form 7 juga menganjurkan pola ini. Hasilnya, email lolos autentikasi dan kamu tetap bisa membalas pengunjung dengan sekali klik.

Bila port SMTP keluar diblokir oleh hosting atau VPS, gunakan port lain yang diizinkan atau layanan SMTP relay. Penjelasan tiap port ada di port SMTP 25, 465, dan 587.

Langkah lanjutan setelah SMTP terpasang

  • Kirim email uji dari menu plugin SMTP. Hampir semua plugin punya fitur ini dan menampilkan pesan error bila gagal.
  • Isi formulir dari perangkat lain dan cek apakah email masuk ke Inbox, bukan Spam.
  • Pasang perlindungan spam seperti CAPTCHA atau honeypot di formulir agar kuota kirim tidak habis oleh bot.
  • Simpan entri formulir di database bila plugin formulirmu mendukung. Kalau suatu hari email gagal, pesan pengunjung tetap tersimpan.

Bagaimana kalau website ada di VPS?

Di VPS, situasinya sedikit berbeda. Banyak image sistem operasi tidak memasang layanan pengirim email (seperti Postfix) secara bawaan, sehingga fungsi mail() gagal tanpa pesan yang jelas. Sebagian penyedia cloud juga menutup port 25 keluar untuk mencegah penyalahgunaan.

Memasang server email sendiri di VPS hanya untuk formulir kontak biasanya tidak sepadan. Kamu harus mengurus reverse DNS, SPF, DKIM, reputasi IP, dan pembaruan keamanan. Cara yang lebih praktis tetap sama: pasang plugin SMTP dan arahkan ke server email yang sudah ada, baik email hosting, layanan email bisnis, maupun SMTP relay. Untuk aplikasi di luar WordPress, prinsipnya juga berlaku: kirim lewat SMTP dengan login, bukan lewat program pengirim lokal.

Plugin lain yang membantu website bisnis bisa dilihat di plugin WordPress wajib untuk website bisnis.

Pertanyaan yang sering diajukan

Apakah boleh memakai akun Gmail pribadi sebagai SMTP WordPress?

Secara teknis bisa lewat sandi aplikasi atau OAuth, tetapi alamat From tetap gmail.com dan ada batas kirim harian akun pribadi. Untuk website bisnis, lebih rapi memakai email domain sendiri.

Kenapa email reset password masuk, tapi email formulir tidak?

Biasanya karena pengaturan From di plugin formulir berbeda, misalnya memakai email pengunjung. Samakan From dengan alamat domain sendiri dan pindahkan email pengunjung ke Reply-To.

Apakah WooCommerce juga terpengaruh?

Ya. Email pesanan WooCommerce juga lewat wp_mail(), jadi plugin SMTP memperbaiki formulir kontak dan email toko sekaligus.

Sumber & referensi

Baca juga