Kılavuz Yazılım / Php / Php SMTP Mail Gönderme

Php SMTP Mail Gönderme

php smtp mail gönderme sınıfıPhp kullanan kişilerin en çok ihtiyaç duydukları konuların başında php ile mail gönderme konusu gelir. Örneğin sitenizin iletişim formunda, üyelik şifre sıfırlama işlemlerinde, e-bülten gibi bilgilendirme bölümlerinde mail gönderme işlemi yapılması gerekir.

Normal şartlarda Php’nin kendi içinde barındırdığı mail fonksiyonu ile mail gönderme işlemi yapılabiliyor. Ama gel gelelim doğrudan bu fonksiyon ile yollanan mailler mailin gittiği sunucu tarafından spam olarak algılanabiliyor. Çünkü doğrudan yollanan bu maillerde dkim ve spf denetleme mekanizmalarından uzak bir gönderim sağlanır. Buda karşı tarafın giden sunucusunda spam izlenimi yaratır.

Hosting Firmaları Mail Fonksiyonunu Kapatıyor!

SMTP PostaHosting satışı yapan firmalar günümüzde sunucu yapılandırması esnasında mail fonksiyonunu pasif hale getiriyor. Bu nedenle hosting kullanıcıları hosting hesapları üzerinden php’de mail fonksiyonu ile mail gönderemiyor. Hosting firmalarının sunucular için satın aldıkları sabit ip adreslerinin temiz tutulması için bazı güvenlik tedbirleri aldıkları bir gerçektir.

Sürekli spam maillerin gönderildiği ip adresleri doğal olarak Gmail, Hotmail, Yandex, Bing gibi büyük mail servisleri tarafından kara listeye alınır. Kara listeye alınan ip adresleri üzerinden gönderilen her mail spam niteliği taşır. Bu nedenle Hosting firmaları bu konuya önem vermektedir.

SMTP Nedir? Önemi!

Smtp açılımı “Simple Mail Transfer Protocol” yani Türkçe karşılığı “Basit posta aktarım protokolü” dür. Smtp giden sunucu ile posta gönderimi yapıldığında doğal olarak yolladığınız e-posta kişinin gelen kutusuna düşmesi sağlanır.

Günlük hayatımızda kullanılan normal postalar ile aynı mantıkta düşünebilirsiniz. Smtp ile e-posta yolladığınızda belli başlı bazı adımlardan geçilerek e-posta gideceği mail adresine ulaşım sağlar.

PHP SMTP Mail Gönderme İşlemi

Bunun için öncelikli olarak php mailler sınıfını bağlantıyı kullanarak indirin. Bunun içinde class.phpmailler.php ve class.smtp.php dosyaları önem arz ediyor. Bu dosyaları kullanacağınız dizinin içine katınız ve bu işlemden sonra şu şekilde bir kullanım ile mail gönderme işlemini yapabiliyorsunuz.

Bu şablonu kendinize göre modifiye ederek PHP Smtp mail gönderme işlemini sorunsuz bir şekilde yapabilirsiniz. Eğer birden fazla kişiye bir defada mail göndermek istiyorsanız şu şekilde bir kullanım yapabilirsiniz.

Adres sayısını bu şekilde çoğaltabilirsiniz. Eğer veritabanından mailleri çekip tüm kişilere toplu mail göndermek istiyorsanız o zaman bu kodun bir tanesini döngünün içinde kullanmanız yeterli olacaktır.

Eğer SSL (güvenlik sertifikası) kullanan bir sunucu üzerinden mail gönderecekseniz o zaman SSL ayarlarını yapmanız gerekiyor. Bunun için yukarıdaki mail kodlarımıza şu ufak kodu eklememiz yeterli olacaktır. Bu bölümü “tls” veya “ssl” olarak düzenleyebilirsiniz.

Bu şekilde sorunsuz mail gönderimi yapabilirsiniz. Bu kodları bu şekilde kullanmanıza rağmen eğer şu şekilde bir hata alıyorsanız,

Mail gönderilirken bir hata oluştu: The following From address failed: yolla@siten.com : Called Mail() without being connected

Bu durumda hosting aldığınız firma’ya destek talebi açıp hostinginiz için “Dış Smtp” erişim yetkisi verdirmeniz gerekmektedir. Bu ayardan sonra bu hatadan kurtulup sorunsuz bir kullanım yapabilirsiniz. Bu problem şu anda sıklıkla karşılaşılan problemlerdendir. Bu şekilde sorunu çözebilirsiniz.

Daha farklı problemler yaşayanlar olursa yorum atarak bizden destek alabilirler.

Bir önceki yazımız olan Cookie Nedir? Sitelerde Çerez Kullanımı başlıklı makalemizi de okumanızı öneririz.

Rating: 5.0/5. From 3 votes.
Please wait...

Öneriyoruz

Php Sayfada Çıkan Hataları Kapatma yada Gizleme

Php’de kodlama yaparken yanlış kullanımdan yada başka sebeplerden ötürü sayfanızın bazı yerlerinde hatalar ile karşılaşıyorsanız ...

11 Yorumlar

  1. Leyla Türkmen

    Php’de mail göndermeyi çok denedim ama bir türlü başaramamıştım. Hosting firmasıyla görüştüğümde smtp class’ları ile mail göndermemi istediler. Bu makaledeki kodları denedim gerçekten de sorunsuz çalıştı. Spama düşme sorunuda yok, gelen kutusuna direk düşüyor. Php smtp ayarlarınızı düzgün yapınca çok iyi çalışıyor kodlar.

  2. Phpmailler ile SMTP giden sunucusu ile mail göndermek isterken karşıma “Called Mail() without being connected” bu hata çıkmıştı. Bunun kodlardan kaynaklandığını düşünürken asıl sorunun “Dış SMTP” yetkisi olduğunu anlamam uzun zaman aldı.

    Bu makale sorunun çözümü açısından çok fayda sağladı bana. Bu nedenle teşekkür ediyorum arkadaşlar.

  3. “iletişim formunda, üyelik şifre sıfırlama işlemlerinde, e-bülten gibi bilgilendirme bölümlerinde mail gönderme işlemi” bu işlemler otomatik mail gönderimiyle olmaktadır. Phpmail dosyasının içindekileri ana dizine attığımızda, bu işlemler yine aynı şekilde otomatik mi gönderilecek? Yoksa bu bahsi geçen sistem toplu mail göndermek yada spama düşmeden mail göndermek için mi kullanılıyor? Eğer otomatik maillerde bu şekilde gidiyorsa gayet başarılı olur.

    • PHP Mailler otomatik mail gönderme işlemlerinde kullanılabilir. Smtp doğrulaması ile mail gönderileceği için spam’a düşme ihtimali düşüktür. Özellikle mx’leri yandexe yönlendirip, yandex alt yapısını kullanarak mail gönderiyorsanız o zaman bir kaç ufak ayar ile maillerinizi dijital imzalı olarak göndermeniz daha da sağlam olacaktır.

      DKIM ve SPF kayıtlarını yandex’e göre düzenlerseniz yolladığınız otomatik mailler’de dijital imzalı bir şekilde gönderilecek ve spam’a düşme olasılığı bir nebze olsun azalacaktır. Toplu mail işi biraz problemli olabilir. Bir noktaya kadar toplu mail için kullanılabilir ama mail göndereceğiniz kişi sayısı arttıkça problem yaşamaya başlarsınız.

  4. İletişim formları dahil artık PHP Mail () fonksiyonu birçok webhosting firması tarafından kapatıldığı için, smtp gönderimini öğrenmek isteyenlere adeta ilmek ilmek anlatılmış konu 🙂 Çok teşekkür ederiz.

  5. Bu makale sayesinde PHP SMTP mail gönderme işlemi yapabildim, gayet basic bir anlatım ve kullanım var bu nedenle kodları anlamakta zorlukta çekmedim. Gayet başarılı bir çalışma olmuş oldukça açıklayıcı elinize emeğinize sağlık hocam.

  6. Merhaba,
    Smtp mail göndermeyi denediğimde böyle bir hata ile karşılaşıyorum. Sorunun kaynağı nedir? yardımcı olursanız sevinirim.
    teşekkürler.

    ” Failed to connect to server: php_network_getaddresses: getaddrinfo failed: Name or service not known (0)
    SMTP Error: Could not connect to SMTP host. ”

    • Smtp bağlantı hatası veriyor. Port ayarınızı gözden geçirin doğru olduğunu düşünüyorsanız o zaman hosting aldığınız firmaya destek ticket’ı açarak “dış smtp” yetkisinin bulunup bulunmadığını sorun. Yetki verilmemişse dış yetki verip tekrar deneyin muhtemelen sorun çözülecektir.

  7. Tam sitem için bu gerekliydi, wordpress harici bir sayfayı iletişim sayfayı yapacaktım. Çok iyi oldu. Emeğiniz için teşekkürler.

  8. Bu konu faydalı oldu çünkü contact form 7 eklentisi smtp ayarları yapılmadan çalışmıyor.

  9. Php ile mail gönderme konusunu her yerde aradım taradım fakat bu yazın sayesinde işlerimi halledebildim çok teşekkür ederim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir