Php SMTP Mail Gönderme

  • Konuyu başlatan Konuyu başlatan ITJA
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 8
  • Görüntüleme Görüntüleme 533

ITJA

Level 5
Katılım
20 Tem 2021
Konular
148
Mesajlar
905
Çözüm
3
Online süresi
1mo 3d
Reaksiyon Skoru
1,079
Altın Konu
32
TM Yaşı
4 Yıl 10 Ay 22 Gün
Başarım Puanı
185
MmoLira
500
DevLira
3
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

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!



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.

PHP:
$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.

PHP:
$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.
 

En Çok Reaksiyon Alan Mesajlar

Paylaşım için teşekkürler, ellerine sağlık.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)