Ternyata untuk mengirim email via localhost tidaklah susah, asal mengerti akar persoalan mengapa gagal mengirim email. 

Pada XAMPP, PHP mengirim email menggunakan file. Artinya, email yang kita kirim melalui perintah mail di PHP tidak benar-benar dikirim, melainkan hanya ditaruh (baca: dikirim) ke folder tertentu. Oleh karena itu ada beberapa settingan yang perlu kita lakukan.

Buka php.ini, perhatikan bagian berikut:

[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
; SMTP = localhost
; smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost

; XAMPP IMPORTANT NOTE (1): If XAMPP is installed in a base directory with spaces (e.g. c:\program filesD:\xampp) fakemail and mailtodisk do not work correctly.
; XAMPP IMPORTANT NOTE (2): In this case please copy the sendmail or mailtodisk folder in your root folder (e.g. C:\sendmail) and use this for sendmail_path. 
 
; XAMPP: Comment out this if you want to work with fakemail for forwarding to your mailbox (sendmail.exe in the sendmail folder)
;sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"
; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the D:\xampp\mailoutput folder
sendmail_path = "D:\xampp\mailtodisk\mailtodisk.exe"

Nah, terlihat bahwa secara default yang akan mengirim email adalah aplikasi mailtodisk.exe. Dari namanya saja kelihatan bahwa email kita akan dikirim ke disk alias disimpan di folder tertentu.

Oleh karena itu, settingan yang perlu dilakukan adalah:

  • ganti sendmail_path menjadi sendmail.exe. Untuk nama path file-nya tidak boleh menggunakan spasi.
  • kemudian buka sendmail.ini yang ada pada folder yang sama dengan sendmail.exe. Aturlah konfigurasi smtp server, port, username, password, dsb.
  • Restart apache dan lakukanlah ujicoba

Semoga berhasil!

Advertisements