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.

Bugün sizlere Php Smtp Mail Gönderme işlemi nasıl yapılır? mantığı nasıldır? ve bununla ilgili yaptığımız örnek “php iletişim formunu” size incelemeniz için kaynak kodlarıyla birlikte yazının sonunda sunuyoruz. Örnek uygulama dosyasını indirip, inceleyebilirsiniz.

Php Mail fonksiyonu ile mail gönderme işlemi

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ılanır. Çünkü doğrudan yollanan bu maillerde herhangi bir oturum doğrulama, dijital imza kontrolü, Spf key gibi durumlar söz konusu değildir. Buda karşı tarafın giden sunucusunda spam izlenimi yaratır.

PhpMailler sınıfı ile smtp mail gönderme işlemi

Smtp ile mail gönderme işinde ise işler tam tersine döner. Misal; Yandex’te bir mail hesabınız var ve bu hesabınızdan normalde giriş yapıp nasıl mail yolluyorsanız, smtp mail gönderme işlemindede PhpMailler Sınıfı, smtp sunucusu bağlantısı kurarak bu sunucu üzerinden gayet doğal bir şekilde mail gönderir. Bu nedenle yolladığınız mailler karşı tarafın gelen kutusuna düşer.

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 ve daha birçok büyük mail sağlayıcıları 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.

17.02.2019 tarihinde eklendi : Sizin için PhpMailler sınıfı ile ufak bir uygulama yaptık. İletişim formu ve bu formun PhpMailler sınıfı ile mail olarak yollanmasını sağladık. Örnek kullanımı inceleyerek, kullanımı hakkında daha iyi bilgi sahibi olabilirsiniz.

İndirmek için alttaki bağlantıyı kullanabilirsiniz.

Örnek Mail Uygulama Kodlarını İndir


Anlamadığınız bir yer olursa yada çalıştıramadım derseniz veya daha farklı problem yaşıyorum diyorsanız lütfen konunun altına yorumlarınızı yazarak sorununuzu bize bildiriniz. Size çözüm üretmek için elimizden geleni yapacağız.

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 4 votes.
Please wait...

Öneriyoruz

php yandex buluta dosya yükleme

Php Yandex.Disk (Buluta) Dosya Yükleme

Merhaba takipçilerimiz, bugün sizlere popüler disk depolama servislerinden olan Yandex.Disk birimine Php ile uzaktan nasıl ...

41 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.

  10. Gayet başarılı ve bilgilendirici olmuş elinize sağlık

  11. İ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..

  12. yıllardır kullandığım sağlam bir mail sınıfı tavsiye ederim sorunsuzdur !

  13. mail() fonksiyonu gibi değil hiçbir kütüphane çok özledim kendisini, çok uzun zamandır kullandığım bir kütüphane ama gel gelelim her kullanımımda bir sorunla karşı kaşıya kalıyorum genelde buralara bakıp tekrar üzerinden geçiyorum.

  14. WordPress’de klasiktir bu ‘SMTP’ hatası. Ama bu yazı sayesinde artık bu hatayı yapmayacağıma emin oldum. Hosting firmalarının bazen önlemler adı altında yaptıkları, son kullanıcıya eksi şekilde yansıyabiliyor. Faydalı bir yazı olmuş.

  15. wordpress gelenekselleşmiş olan bu hayatı bu yazı sayesinde çözeceğimiz konusunda umutluyum. detaylı anlatım için teşekkürlerimi sunarım.

  16. Uzun zamandır worpdress tabanlı internet sitemizde email ile bildirim alma konusunda sıkıntı yaşıyorduk. Hazırlamış olduğunuz bilgilendirme yazısı işimize yaradı. Hosting firmalarının kısıtlamalarının farkında değildik, uyarınız için teşekkür ederiz.

  17. Bu konu beni o kadar uğraştırdıki. Farklı yöntemler denemiştim en son ama siteme harici eklentiler eklemek istemediğim için üstüne düştüm ve sonunda halledebildim, bilgiler için teşekkür ediyorum.

  18. Uzun zamandır aradığım ama bir türlü bulamadığım çok değerli bir konu. Hosting firmalarının bunu yaptığını bilmek de ayrıca beni çok üzdü. Bilgilendirici yazınız için çok teşekkür ederim.

    • Mail fonksiyonu kapatmaları sizi neden üzdü anlayamadım 🙂 adamlar ip adresleri spam’a düşmemesi için kapatıyor, bu makalede bulunan php mailler sınıfı ile sorunsuz mail gönderebilirsin ayrıca spam’a düşme olasılığı düşer. Dijital imzalı mailler gönderilmesi her zaman iyidir.

  19. Üzerinde çalıştığım proje de takıldığım bir sorundu yazınız benim için gayet aydınlatıcı oldu teşekkür ederim.

  20. Php mailler sınıfı gerçektende sorunsuz bir şekilde çalışıyor. Yazdığınız script’iniz için sorunsuz mail göndermek istiyorsanız ideal bir yöntem. Konu ile ilgili hiç bir fikri olmayanlar bile , yazıyı okuduktan sonra bilgi sahibi olabilir, basit bir dille anlatmışsınız.

  21. Bildiğim kadarıyla php mail fonksiyonu açık olduğunda spam mail toplu mail gibi saldırıları engellemek için yapıyorlar sunucu performansını çok değiştirir

  22. Şuanda bir çok sunucuda bildiğim kadarı ile PHPMail fonksiyonu kapalı. Yapılan bir çok scriptte bulunan açık yüzünden sunucu ip adresleri sürekli spam listlere düşüyor. O yüzden de insanlar SMTP mail göndermeyi tercih ediyor.
    Bu yararlı kod için teşekkür ederim.

  23. Çok yararı oldu teşekkürler, bana bambaşka dil gibi gelen şeyler adeta çok kolaylaştı tekrar tekrar teşekkürler iyi günler.

  24. Linux sunucu kullananların başının belası bir mail gönderme yöntemi ya host sağlayıcınız izin vermez ya da bilmezsiniz ama böyle yararlı bir makale sonrası öğrenmek iyi oldu teşekkürler..

  25. php mailer sistemi uzun yıllardır var artık birçok hostun mail kodlarına izin vermediği ortadayken tek çözüm gibi görünüyor.

    bu sistem gmail, yandex gibi sistemler ile de kullanılabiliyor sanırım.

  26. Webmaster için sorun olan php mailler sistemi açıklayı ve kolay bir çözüm bulduğunuz için tşkler. Ayrıca sistem gmail ve yandex sistemlerinde kullanılmasıda artı bir avantajdır Tşkler iyi çalışmalar dilerim

  27. Programlama dilleriyle ilgilenen birisi olarak bu yazınızı beğendiğimi söyleyebilirim. Teşekkürler.

  28. SMTP mail konusunda ciddi sorunlar vardı sitemde. Ne gelen vardı ne giden vardı şu anda güzel çalışıyor teşekkürler.

  29. SMTP ile toplu mail gönderince de ip adresi kara listeye girer mi? veya bir defada en fazla kaç mail göndermeli? Daha önce denemiştim ip adresi yurt dışından banlanmıştı, site 2 gün kapalı kalmıştı ban açılana kadar.

    • Toplu mail işi farklı bir konu. Zaten siz paylaşımlı bir hosting hizmeti kullanıyorsanız doğal olarak hosting firması günlük kota katmıştır. Mesela Radore’de 24 saat’te yani günlük 500 mail gönderme hakkınız var. Paylaşımsız kendi ip adresini ile bir Vds olabilir, bu tarz platformladan daha fazla mailler gönderilebilir. Gel gelelim mail sağlayıcılarının spam filtreleri çok acayip çalıştığı için spam olmayanada spam muamelesi gösterebilmektedir. Bu nedenle spama girmez desek yalan olur.. Ama en başta önlemler alıp, düzgün içerikli mailler oluşturup, data’nızda bulunan herkeze değilde, gruplar halinde kısım kısım ve belli gün aralıklarıyla gönderilen mailler bir nebze daha iyi olabilir.

  30. Uzun süredir sorunuma çözüm arıyordum. Bu yazıyla çözmüş oldum. Yazar arkadaşım ellerine sağlık.

  31. Bu konuyu uzun zamandır arıyordum sitemde kullanmak için. Bugüne nasip oldu. Bilgilendirme için teşekkürler.

  32. Önem arz eden sitelerde hostinge ek olarak ip adresi almamımızı önerir misiniz? Seçim çalışmaları için @siteadı.com üzerinden mail göndereceğiz ve spama düşmesin istiyoruz. Bunun için ekstra yapmamız gereken bir şey var mı?

    • Sabit ip’te alabilirsin, istersen yandex alt yapısına maillerini taşıyarak yandex alt yapısı ile yollayabilirsin. Ama ne yapsak’ta bir noktadan sonra spam işinden tam olarak kurtulamıyoruz. Sanırım dikkat etmek gereken bir diğer önemli husus ise göndereceğin mail içeriği olacaktır. Spam izlenimi verebilecek işaretlemeler, çok renklendirmeler, standart dışı html kullanımı vs.. gibi bir çok sebep spam izlenimi yaratabilir. Yani yollayacağınız mail içeriklerini dikkatli bir şekilde oluşturmakta fayda var.

  33. Yazmış olduğunuz makale sayesinde uzun zamandır aklıma takılan sorulara cevap bulmuş oldum teşekkürler.

Bir cevap yazın

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