Php SMTP Mail Gönderme

Php ile proje geliştiren kişilerin sıklıkla ihtiyaç duydukları konuların başında php mail gönderme işlemi gelir. Örneğin iletişim formu, üyelik şifre sıfırlama işlemi, E-bülten, kampanya bilgilendirme sistemi, sipariş sistemi ve takibi gibi bölümlerde mail gönderme uygulaması yapılması gerekebilir.

Bu makale size, ihtiyacınız olduğu alanlarda sorunsuz bir mail gönderim yapabilmenizi olanak sağlayacak bilgi ve birikimleri içerir.

Bu makalede, Php ile Mailler sınıfını kullanarak mail gönderme işlemi nasıl yapılır? bu işin mantığı nedir? ve örnek uygulama dosyamızı sizlere sunacağız.

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ü yapılmamaktadır. 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 Posta

Hosting 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

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ıyoruz ve bu işlemden sonra şu şekilde bir kullanım ile mail gönderme işlemini yapabiliyorsunuz.

<?php
include ('class.phpmailer.php');
include ('class.smtp.php');
 
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.sitem.com';
$mail->SMTPSecure = 'tls'; //yada SSL
$mail->Port = 587;  //SSL kullanacaksanız portu 465 olarak değiştiriniz
$mail->Username = 'benim@mailadresim.com';
$mail->Password = 'mail şifresi';
$mail->SetFrom($mail->Username, 'Benim Adım');
$mail->AddAddress('alici@adresi.com', 'Alıcının Adı');
$mail->CharSet = 'UTF-8';
$mail->Subject = 'Mail Başlığı';
$mail->MsgHTML('Mailin içeriği!');
if($mail->Send()) {
    echo 'Mail gönderildi!';
} else {
    echo 'Mail gönderilirken bir hata oluştu: ' . $mail->ErrorInfo;
}

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.

$mail->AddAddress('baska@biri.com', 'Başkası');
$mail->AddCC('baska@iki.com', 'Diğeri');
$mail->AddBCC('baska@ucu.com', 'Öteki');

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.

$mail->SMTPSecure = 'ssl';  //yada tls

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.

Örnek Mail Gönderme Uygulaması

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 detaylı bilgi sahibi olabilirsiniz. Bu sayede projelerinizde kolaylıkla uygulayabilirsiniz.

İndirmek için alttaki bağlantıya tıklayın.


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.

Translate »