Php ile SMTP Mail Gönderme

 bcakir
 27 Ocak 2012
 Php

Merhaba arkadaşlar, daha önceki bir yazımda Php ile mail gönderme işlemini anlatmıştım. Bu yazımda ise klasik mail gönderme işlemine göre daha avantajlı ve güvenilir olan Smtp ile mail göndermeyi anlatacağım. Bazı sunucular güvenlik nedeniyle php ile gelen mail() fonksiyonunu engellerler. Buna ilaveten de, mail() fonksiyonu kullanılarak gönderilen mesajların spam kısmına düşme ihtimali çok yüksektir. Bundan dolayıda serverımızda bulunan Smtp sunucusu üzerinden bir hesap kullanarak Php ile mail göndermek daha güvenilirdir. Uygulamamıza geçmeden önce mail atmak için kullanacağımız sınıfımızı buradan indiriyoruz. İndirdiğimiz dosyadan çağıracağımız sınıf class.phpmailer.php isimli sınıftır. İndirdiğimiz klasöre phpmailer ismi verelim ve şimdi yapacağımız uygulamanın çalıştığı dizine koyalım. Mail sınıfının indirilme problemi doğabileceği için uygulamanın çalışır halini yazının sonunda paylaşacağım.

<?php
//sınıfımızı çağırıyoruz
include "phpmailer/class.phpmailer.php";

//sınıfımızı $gonder değişkenine yüklüyoruz
$gonder = new PHPMailer();
$gonder->IsSMTP();
//gönderenin mail adresini girin
$gonder->From = "deneme@bcakir.com";
$gonder->FromName = "Bcakir";
$gonder->Sender = "deneme@bcakir.com";
$gonder->ReplyTo = "deneme@bcakir.com";
$gonder->Host = "smtp.bcakir.com";
//gönderme portu (duruma göre 25. portta olabilir)
$gonder->Port = 587;
$gonder->SMTPAuth = true;
//SMTP kullanıcı adı girin
$gonder->Username = "deneme@bcakir.com";
//SMTP şifre girin
$gonder->Password = "sifre";
$gonder->WordWrap = 50;
//mail formatını HTML yapıyoruz
$gonder->IsHTML(true);
//mailin konusu
$gonder->Subject = "Smtp Mail Denemesi";
//HTML formatında mailimizin içeriği
$gonder->Body = "Bu bir SMTP denemesidir.<br />deneme@bcakir.com tarafından gönderilmiştir.";
//maili alacak adresi ve ismini girin
$gonder->AddAddress("bcakir@hotmail.com","Bünyamin ÇAKIR");

//mail gönderilme işlemi
if ($gonder->Send()){
    echo "Mail başarıyla gönderildi";
}else{
    echo "! Mail gönderilemedi.";
}
?>

Mail göndermek için genelde 25 nolu port kullanır fakat bazı internet sağlayıcıları 25 numaralı portu yasaklıyor. Bu yüzden 587 numaralı portu deneyebilirsiniz. Bir de eğer bu uygulamayı çoklu mail göndermede kullanacaksanız, her mail göndermede sleep(3); fonksiyonu ile mail aralarında 3 saniye gibi bir süre bekletme yapın. Aksi halde spama düşme ihtimali çok artacaktır. Uygulamamızın bütün içeriğinin olduğu dosyayı buradan indirebilirsiniz. Yararlı olması dileğiyle.

 5.861 Okunma

Bu yazıya 15 yorum yapılmış.

  1. kod basarılı bır sekılde calısıyor ztn standart smtp gonderım protokollerı bu fakat bende nedense calısmıyor cozemedım gıttı bır turlu 😀 mail gönderilemedi demesının sızce nedenı ne olabılır

    • Localde çalıştırmayı deniyorsan, bilgisayarına mail server kurman lazım.

  2. Merhaba;
    Makalenizi Çok Beğendim.
    Tek Seferde Çalıştırdım ve Geliştirdim.
    Ama sender kelimesinin anlamını ve ne işe yaradığını bir türlü çözemedim.

  3. Hocam SMTP kullanıcı adı ve SMTP şifre neyi belirtiyor? Yeni başladım bilgim yok. Açıklamanız için şimdiden teşekkürler.

    • SMTP kullanıcı adı ve şifresi için; cpanel üzerinden webmaile girin ve mail kullanıcısı oluşturun.
      örneğin info@siteadiniz.com. adında bir mail açıp bir de şifre belirleyeceksiniz. Bu bilgileride yukarıdaki bilgilerin yerine dolduracaksınız.

  4. ben böyle class kullanmak istemiyorum mybb smtp.php kısa bir fonksiyon haline yapmak istiyorum

  5. Usta mail gönderme kolay. Sunucudaki mailleri nasıl okuyabilirim?

  6. Biraz daha açıklayıcı olabilirdi.
    Mail gönderilen Body kısma textboxlardan gelen verileri yazdırmak..

  7. Bu kodları yazdık diyelim formdaki textarea’lara ne yazıcaz peki diyelim isim soyisim konu mesaj şeklinde olan alanları nasıl yapcaz

  8. Makalenizi çok beğendim. Tek seferde çalıştırdım ve geliştirdim.

  9. Nedense hiç bir tepki vermiyor yani ne gönderildi nede gönderilmedi diyor, yardım lütfen

    • Localhost’ta deniyorsan mail server kurman gereklidir, mail atabilmen için, internetten hosting (barındırma) hizmeti aldıysan onlara mail server kuruludur, kodu kullanırken hata yapmış olmalısın.

  10. hemen deniyorum teşekürler

  11. Başarılı bir makale tebrikler.

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Php
Kapat