Digital Note

Grab a coffe, take a seat, maybe listen to some music and relax by reading our digital daily diary. We want to share our minds and know how with you and the whole world!

Blog phones

XAMPP PHP sendmail using gmail [work-100%]

Berikut saya akan berikan konfigurasi supaya XAMPP dapat mengirim email dari localhost ke email manapun bahkan dapat mengirim ke gmail, yahoo, hotmail, dll.

konfigurasi yang dilakukan sangat mudah dan sederhana, Silahkan ikuti petunjuk berikut:

Step 1

buka file php.ini (php/php.ini)

[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 = 

; 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"

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header=Off

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log = "D:\xampp\php\logs\php_mail.log"

Step 2

buka sendmail.ini (sendmail/sendmail.ini)

[sendmail]

; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory.  (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.

smtp_server=smtp.gmail.com

; smtp port (normally 25)

smtp_port=465

; SMTPS (SSL) support
;   auto = use SSL for port 465, otherwise try to use TLS
;   ssl  = alway use SSL
;   tls  = always use TLS
;   none = never try to use SSL

smtp_ssl=auto

; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify

;default_domain=mydomain.com

; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging

error_logfile=error.log

; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging

debug_logfile=debug.log

; if your smtp server requires authentication, modify the following two lines

auth_username=usermail@gmail.com
auth_password=passwordmail

; if your smtp server uses pop3 before smtp authentication, modify the 
; following three lines.  do not enable unless it is required.

;pop3_server=
;pop3_username=
;pop3_password=

; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify 
; the "From: " header of the message content

force_sender=usermail@gmail.com

; force the sender to always be the following email address
; this will only affect the "RCTP TO" command, it won't modify 
; the "To: " header of the message content

;force_recipient=

; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting.  you can manually set the ehlo/helo name if required

;hostname=

Note: jangan lupa mengganti usermail@gmail.com dan passwordmail sesuai dengan akun anda.

Step 3

Silahkan cek dengan kode php mail(), contoh:

$from_mail = 'no-reply@serverhost.com';
$to = 'yourmail@yahoo.com'; 

$subject = 'SUBJECT MESSAGE';
$message = <<<AKAM
BODY message on send.<br>
<span style="color:#f00;font-weight:bold;">You can change body message</span>
AKAM;

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: Your Name <'.$to.'>' . "\r\n";
$headers .= 'From: NO-REPLY <'.$from_mail.'>' . "\r\n";

$sendtomail = mail($to, $subject, $message, $headers);
if( $sendtomail ) echo 'Success';
else echo 'Failed';

Bagaimana hasilnya?

Jika masih belum berhasil terkirim ke email, lakukan langkah berikut:

Step – Change Compatibility (Windows Only)

  1. Buka dengan explorer ke directory sendmail .
  2. Klik-Kanan file sendmail.exe  pilih Properties.
  3. Pindah ke tab Compatibility .
  4. Klik tombol Change settings for all users .
  5. Silahkan rubah bagian Compatibility mode menjadi Windows XP (Service Pack 3) .
  6. Beri tanda centang pada bagian Run this program as an administrator .
  7. Klik tombol OK -> OK.

Silahkan cek kembali dengan menjalankan file php, apakah sudah berhasil terkirim

Jika masih belum berhasil lakukan langkah berikut

Step – Set Allow Application on GMAIL

Standar keamanan GMAIL meningkat untuk tidak mengijinkan aplikasi yang kurang aman untuk mengakses akun, sehingga perlu merubah pengaturan pada GMAIL akun anda supaya mengijinkan aplikasi yang kurang aman (sendmail : terdeteksi aplikasi kurang aman oleh gmail)

Berikut langkah untuk merubah pengaturan akun di gmail:

  1. Silahkan buka email google anda
  2. Silahkan menuju ke https://www.google.com/settings/security/lesssecureapps .
  3. Silahkan pilih Aktifkan atau Ijinkan .
  4. Klik tombol Selesai atau Simpan .

Silahkan cek lagi.

Semoga trik diatas dapat membantu anda.

Trackback from your site.

Comments (10)

  • Avatar

    Febro Herdyanto

    |

    Masih belum bisa bang..
    Udah konek internet pake Hotspot Portable juga masih belum ke kirim .
    Kalo kirim mesti muncul CommandPrompt. Yg sendmail.exe
    Cara ngatasinya gimana? Mohon dibalas

    Reply

    • Avatar

      Adi Wicaksana

      |

      1. sudah melakukan CHANGE COMPATIBILITY pada file sendmail.exe ?
      2. xampp diinstall dimana ? jika di C: ada kemungkinan terkena UAC. Bisa dipindah atau diinstall lagi xampp-nya tetapi di drive selain C

      Reply

  • Avatar

    Lilah

    |

    mohon bantuannya dong…..

    ini di kode php mail() ketika di jalankan masih error…

    Warning: mail(): Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in C:\xampp\htdocs\jadwal\kirimjadwal.php on line 16
    Failed

    dan belum berhasil

    Reply

    • Avatar

      Adi Wicaksana

      |

      konfigurasinya masih belum benar, php mail masih membaca relay di localhost, jika mengikuti cara diatas maka seharusnya relay menggunakan milik google dengan akun anda sebagai authentication
      Mungkin bisa diperhatikan pada step 1 baris 3,4,8 harus dalam keadaan terdisable (dicomment)
      dan pastikan sendmail_path mengarah ke sendmail.exe sesuai letak dikomputer anda

      Reply

  • Avatar

    april

    |

    punya saya tadinya masih failed, setelah dilakukan run as administrator spt pada step change compatibility malah muncul command prompt sendmail.exe, tapi di file phpnya muncul pesan success. namun setelah di cek di email kok tidak ada email masuk yah? ini bagaimana? mohon bantuannya.

    Reply

    • Avatar

      Adi Wicaksana

      |

      XAMPP-nya di drive C ya…
      Bisa dipindahkan ke drive selain drive C

      Reply

      • Avatar

        nuna

        |

        XAMPP saya di drive D, tetapi tidak mau , masalahnya masih sama dengan di atas, itu gimana ya ?

        Reply

        • Avatar

          Adi Wicaksana

          |

          ada beberapa kemungkinan:
          1. UAC aktif ke drive tersebut
          2. sendmail terinfeksi virus (kasus yang paling sering terjadi)
          3. non-aktifkan antivirus dahulu

          Jika cara diatas masih gagal silahkan coba dengan installer xampp versi baru

          Reply

  • Avatar

    naul

    |

    saya udah coba , muncul pesan success , tapi kok emailnya nggk masuk ya? itu kenapa?

    Reply

    • Avatar

      Adi Wicaksana

      |

      – Pastikan point.1 udah benar
      – Pastikan sudah SET ALLOW APPLICATION ON GMAIL (permasalahan yang paling sering muncul)
      – Yang paling Utama terkoneksi ke internet

      Reply

Leave a comment