PHP mail() fonksiyonunun çalışmaması

php logoŞimdi efendim WordPress kullanan arkadaşlar bilirler, özellikle wordpress’i windows tabanlı işletim sistemleri üzerinde kullanan arkadaşlar -ne biliyim Windows 2003 olur, Windows 2000 olur, olur da olur – dikkat etmişlerdir, çoğu zaman php nin mail() fonksiyonu çalışmaz. Ha şansınız vardır, php’ yi kurar kurmaz, WordPress’i yükler yüklemez çalışır, götünüzden bal akıyo derim, başka da bişey demem. Normalde çalışmaz çünkü, ya da yalnızca bana kıllık yapıyo, bilemiyorum.

Neyse efendim, ben bu olaydan çokça muzdarip olduğum için, eğer siz de yaşıyorsanız benzer durumları, yaşamamanız için -sonuçta sizin rahatınız için çalışıyoruz dimi :)- kısaca bu problemi nasıl çözebileceğinizden bahsedicem. Öncelikle php’nin mail() fonksiyonunun gerçekten çalışıp çalışmadığını kontrol etmemiz lazım. Bunun için de boş bir php sayfası açıyoruz ve içerisine aşağıdaki kodları yazıyoruz efendim. Nedir yani,

<?php
$email = ‘postmaster@mymail.com‘;
$fromemail = ‘
postmaster@mymail.com‘;
$subject = $_POST[‘subject’];
$msg = ‘Bu bir denemedir’;
$headers = “From: “.$fromemail;
if( !mail($email, $subject, $msg, $headers) ){
echo “Eposta gönderiminde hata oluştu.”;
}else{
echo “Eposta başarıyla gönderildi.”;
}
?>

Sonrasında efendim dosyamızı kaydediyoruz ve sunucu üzerindeki bir siteye koyuyoruz. Tarayıcımızı kullanarak bu dosyayı browse ediyoruz. Karşımıza “Eposta gönderiminde hata oluştu” gibi bir yazı çıkıyorsa rahatlıkla şunu diyebiliyoruz, evet sizin sunucu üzerindeki php mail() fonksiyonun götüne su kaçmış, dolayısıyla çalışmıyor. Ha yok “Eposta başarıyla gönderildi” gibi bir yazı çıkarsa karşınıza, bu yazının geri kalan kısmını okumanıza gerek yok. Evinize gidin, yatın, dinlenin felan fişmekan…

Şimdi bilen arkadaşlar bilirler, php kurulu sistemlerde meşhur bir dosya vardır; php.ini dosyayı. Öteden beri kıl olurum zaten bu dosyaya, tipik bir linux, unix sistem kafası. Neyse mail() fonksiyonunuz çalışmıyorsa gidip php.ini dosyasını açıyoruz (genellikle windows kurulumunun olduğu klasör altında olur, ya da özel olarak php’yi belirli bir klasöre kurduysanız o klasör altındadır) ve aşağıdaki satırların olduğu bölümü buluyoruz.
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

burada dikkat etmeniz gereken satır smtp_port satırı, bu satırın mevcut sunucunuz üzerindeki SMTP servisinin kullandığı port ile aynı olması gerekir. Misal benim php.ini dosyamda bu değer 1000’di. Ne alakaysa artık! Ben bu değeri default smtp port değeri olan 25 ile değiştirdim ve iis’i yeniden başlatıp yukarıdaki testi (mail() fonksiyonunun çalışıp çalışmıyor olduğu) yinelediğimde, çok afedersiniz eşek gibi gönderdi mailleri php, çatır çatır hemde 🙂

Umarım faydalı olur bu bilgiler sizin için de.

, ,

3 Responses to PHP mail() fonksiyonunun çalışmaması

  1. Haluk Kaya 25 Nisan 2009 at 4:52 PM #

    PHP İş İlanları ve PHP Uzmanları
    http://www.acikis.com/php-is-ilanlari.html

  2. kenan 06 Kasım 2012 at 11:36 AM #

    hocam hala bu hatayı veriyor

    Warning: mail() [function.mail]: SMTP server response: 530 SMTP authentication is required.

    • Ahmet BÜTÜN 06 Kasım 2012 at 1:44 PM #

      Kenan,

      SMTP sunucun güvenlik sebebiyle “Authentication” talep ediyor. Yani mail sunucuna ayrıca bir kullanıcı adı/şifre kombinasyonu göndermen de lazım.

      kolay gelsin

Bir Cevap Yazın

Font Resize