PHP SMTP ile Mail Gönderme

PHP SMTP ile Mail Gönderme

Hepinize merhaba dostlarım :). Bu yazımda sizlere php ile proje geliştirirken özellikle projeniz de büyük bir projeyse kullanmanızın gerekli olduğu, mail gönderme işlemleri için kullanılan SMTP den bahsedeceğim :). Özellikle projeniz bir hatırlatma uygulaması gibi bir proje ise SMTP sizler için kaçınılmaz olacaktır. Neden diye soracak olursanız şöyle bir örnek vereyim:

Düşünün bir hatırlatma uygulaması yaptınız diyelim. Buraya üye olan bir kullanıcı hatırlatılacak olayları yazdığında kendisine sistemin hatırlatmasını isteyecektir. Yani mail göndersin bişeyler yapsın bana bunu hatırlatsın isteyecektir. Bunu yapmasa sistem o zaman hatırlatma uygulamasının bir anlamı kalmaz :). İşte bu aşamada dostlarım projemizde SMTP yani mail gönderme kütüphanesini kullanmamız gerekli olacaktır. Öğrenmek için heyecanlandığınızı seziyorum. O halde sözü daha fazla uzatmadan hemen konuya geçiyorum :).

SMTP Kurulumu

Eveeeet :). Artık geldik SMTP nin kurulum aşamasına. Öncelikle bilgisayarınızda Composer programının kurulu olması gereklidir dostlarım. Bunu sayfamda paylaşmıştım. Yazıya ulaşmak isterseniz buradan ulaşabilir ve bilgisyarınıza composer programını kurabilirsiniz. Bu aşamada composer programını kurdunuz varsayarak konumuza giriş yapıyorum. Öncelikle projemizin kurulu olduğu terminalden (CMD olabilir veya PHPStorm Kullanıyorsanız Onun Terminali Olabilir) erişip

composer require phpmailer/phpmailer

komutunu vermemiz lazım. Bu komut bizim proje klasörümüze phpmailer kütüphanesini dosyalarını adım adım indirecektir. İndirme süresi uzun veya yavaş olabilir bu tamamen sizin internet bağlantınızla alakalıdır :). Bu aşama tamam ise dostlarım şimdi sıra php kodları ile dosyamızı oluşturmakta :).

SMTP Ayarları

PHP projemizde mail göndereceğimiz bir php dosyası oluşturalım ve en üst kısmına aşağıdaki ayarları yazalım

<?php
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;

    require_once('vendor/autoload.php');
?>

şeklinde yukarıda tanımlamamızı yaptık. Nedir bunlar diye soracak olursanız hemen anlatayım:

Biz bu dosya içerisinde yani mail göndereceğimiz php dosyası içerisinde indirdiğimiz PHPMailer dosyasını kullanacağımızı ve vendor klasörü içerisindeki autoload.php nin çalıştırılıp phpmailer kullanımının hazır hale getirilmesinni belirtmiş oluyoruz. Bunları sayfamızın en üstünde tanımladığımıza göre dostlarım gelelim diğer aşamaya

$mail = new PHPMailer(true);

try {
    $mail->SMTPDebug = 2;   // 1 hata ve mesaj verdirir, 2 sadece mesaj verdirir
    $mail->isSMTP();  // gonderilecek mailin bir smtp maili olduğunu programa söylüyoruz
    $mail->Host="";  // mail host adresi
    $mail->SMTPAuth = true;   // amtp de mail doğrulaması yapılacağını sisteme belirtmiş olduk
    $mail->Username="mail_adresiniz";
    $mail->Password="mail_şifreniz";
    $mail->SMTPSecure="tls";  // smtp güvenliği
    $mail->Port="465";  // smtp port (465 güvenlikli)  (gmail kullanacaksanız 587 yapabilirsiniz)

    $mail->setFrom("mail_adresiniz","İsminiz");
    $mail->addAddress("gonderilecek_mail");

    // $mail->addBCC();
    // $mail->addCCC();   // bu ikisi çoklu mail gönderileceği durumlarda kullanılabilir

    $mail->isHTML();  // mailin html formatında göönderileceği bilgisi
    $mail->CharSet="UTF-8"; // kkarakter seti
    $mail->Subject="mail_konusu";
    $mail->Body="mesaj_iceriği";

    if ($mail->send()){
        // mail gönderme başarılı ise yapılacak işlemler
    }else{
        // mail gönderme başarısız ise yapılacak işlemler
    }


}catch (Exception $e){
    echo $e->getMessage();
}

şeklinde kodlarımızı yazdık. Burada işlemler nasıl işledi diye soruyorsanız gelin madde madde anlatarak gidelim

  • Öncelikle en üst kısımda sayfamıza dahil ettiğimiz PHPMailer kütüphanesinden bir nesne oluşturuyoruz. Nesne oluştururken de bir classtan nesne oluşturduğumuz için o class ın yapıcı methodu true parametresini zorunlu kılıyor ve biz de $mail = new PHPMailer(true) diyerek içerisine parametremizi gönderiyoruz
  • Daha sonra işlemlerde herhangi bir hata olduğunda ekrana basılsın bu hata sonucu diyerekten try catch bloğu içerisine kodlarımızı ekliyoruz.
  • Try bloğumuzun içerisinde smtpdebug ifadesinde sonucu 1 veya 2 yapabiliriz. Ben projelerimde genellikle 2 yapıyorum. Bunun amacı ise şudur. 1 yazarsak hem hata çıktısını hem mesaj çıktısını verirken 2 sadece işlemin meaj çıktısını ekrana verecektir
  • Daha sonra isSMTP ile bu göndereceğimiz mailin bir smtp mail olduğunu sisteme bildiriyoruz
  • Host kısmında bizim smtp ile göndereceğimiz mailin (Hotmail olabilir, GMail olabilir, Domain Mail olabilir) host adresini yazacağız
  • SMTPAuth kısmında ise bu smtp mail gönderme işleminde mail doğrulaması yapılmasının gerektiğini belirtiyoruz
  • Username ve Password Kısmında bizim mail adresimiz ve mail şifremiz smtp mailer üzerinden kullanılacağı için bu bilgileri oraya girmemiz gerekiyor
  • SMTPSecure kısmı ise mailimizin güvenli gönderim ayarlarını (ssl, tls gibi) yapabilmemize olanak sağlıyor
  • Port kısmı ise Host kısmı gibi mail göndereceğimiz servisin (Hotmail, Gmail vs gibi) port ayarını girmemize olanak sağlıyor
  • setFrom kısmında ise Alıcı tarafında Maili kimin gönderdiği ve gönderen kişi kim bunların bilgisini alıyor. 2 parametre alıyor. 1. parametrede gönderen kişinin yani bizim mail adresimiz, 2. parametrede ise gönderen kişinin adı yani bizim adımız yer alıyor
  • addAdress alanında ise maili kime göndereceksek onun mail adresini yazmamız gerekiyor dostlarım
  • addBCC ve addCCC alanları ise çoklu mail göndermemiz gerektiği durumlarda kullanılabilir. Örneğin sisteminizde abonelik modülü koydunuz varsayalım. Bu aboneleri addBCC() ile bir döngü araılığıyla ekleyip işlemleri rahat bir şekilde yaptırabilirsiniz :)
  • isHTML kısmı ile bizim göndereceğimiz mailin bir HTML formatında gönderileceğini sisteme belirtiyoruz
  • Charset kısmını adından da anlamışsınızdır :). Burada ise göndereceğimiz mailimizin karakter setinin ayarlamasını yapıyoruz
  • Subject kısmında göndereceğimiz mailin konusunu belirterek mail gönderdiğimizde karşı tarafta mailimizin konusunu ekrana bastırıyoruz
  • Body kısmında ise mesajımızın ana içeriği yani göndermek istediğimiz mesajı ekliyoruz
  • $mail->send() komutu ile mesajımızı alıcıya gönderme işlemini yapıyoruz. Bunu bir if else şartının içerisinde yazmamız gerekiyor. Çünkü işlem %100 başarı ile gerçekleşmez bazen hatalarla karşılaşabiliriz. İşte bu durumda mesaj gönderimi başarılı ise yapacağımız işlemleri, başarısız ise yapacağımız işlemleri yazıyoruz.
  • Ve en son olarak catch bloğunda ise eğer try bloğu içerisinde herhangi bir sorun olmuşsa bu hatayı Exception ile yakalayıp ekranımıza bastırma işlemini gerçekleştiriyoruz


Evet dostlarım bu yazımda sizlere php programlama dilinde PHPMailer kütüphanesinin kullanımını ve nasıl mail göndereceğimizi dilim döndüğünce anlatmaya çalıştım. Umarım faydalı olmuşumdur. Başlarda biraz karmaşık veya zor gelebilir anlıyorum ben de aynı tepkiyi vermiştim. Bu durumda sizlerin yapmasını istediğim şey her yazımın altında da dediğim gibi "İstikrarlı ve Azimli Çalışmak, Bolca Pratik Yapmak :)". Bu dediğimi hayat felsefeniz yaptığınız sürece başarı sizin için kaçınılmaz olacaktır :).

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıPHP de Tarih İşlemleri
Sonraki YazıWeb Site Güvenliği İçin Alınması Gereken Önlemler
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz