Windows’ta PHP mail() Fonksiyonunu Çalıştırmak

php-logo php-logo   {right}Windows ile beraber (haliyle) bir mail sunucusu gelmediği için, yerel PHP kurulumlarında PHP’nin mail() fonksiyonu çalışmayacak, SMTP sunucusuna bağlanamadığı mesajını verecektir. Bu da içinde mail gönderme özelliği de bulunan bir uygulama yazdığınızda test edemeyeceğiniz anlamına gelir.

Elbette bilgisayarınıza bir SMTP sunucusu kurarak bunun üstesinden gelmeniz mümkün. Uğraşmak isterseniz… Ya da daha kolayı var. Zaten internette bir yerde hazır bir SMTP sunucunuz varsa, onu PHP ile kullanmak üzere ayarlamanız mümkün.

PHP, php.ini’deki ayarlarla şifreli giriş yapılan bir SMTP sunucusu ile mail göndermeyi desteklemez. Ama PHP’nin mail gönderme işini bu işi yapabilen bir programa teslim etmesini sağlayabiliriz.

Bunun için sendmail adlı ufak bir Windows yazılımına ihtiyacınız olacak. Programı buradan indirin ve sıkıştırılmış dosyayı bir yere açın. (Örneğin ben C:\wamp\sendmail klasörüne açtım.)

Daha sonra programla beraber gelen sendmail.ini dosyasını açın. Aşağıda gösterilen alanları sunucunuzun STMP ayarları neyi gerektiriyorsa ona göre değiştirin. Eğer SMTP sunucusu olarak gmail hesabınızı kullanmak isterseniz ayarları aşağıdaki gibi yapabilirsiniz:

[plain] smtp_server=smtp.gmail.com smtp_port=587 auth_username=adresiniz@gmail.com auth_password=GMAILSIFRENIZ [/plain]

Sendmail programını yapılandırdıktan sonra, sıra PHP’nin mail() fonksiyonunu bu programa göndermeye geldi. Bunun için php.ini dosyasını açıyoruz. [mail function] kısmı içerisindeki sendmail_path dışındaki tüm ayarların başına “;” (noktalı virgül) koyarak bu ayarların geçersiz olmasını sağlıyoruz. sendmail_path kısmının başında “;” varsa kaldırıyoruz ve oraya aşağıdakini yazıyoruz. (Sendmaili nereye kurduysanız dosya yolunu ona göre değiştirin.)

[plain] sendmail_path = "C:\wamp\sendmail\sendmail.exe -t" [/plain]

php.ini son haliyle şuna benzemeli:

[plain] [mail function] ; For Win32 only. ;SMTP = localhost ;smtp_port = 25

; For Win32 only. ;sendmail_from = me@example.com ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). sendmail_path = "C:\wamp\sendmail\sendmail.exe -t" ; 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 = [/plain]

Ayarlamaları doğru yaptıysanız sunucunuzu yeniden başlatınca PHP mail göndermeye başlayacaktır.