Php ile Gmail SMTP kullanarak Email Gönderimi

Dijital platformlarda email ve SMS gönderimleri müşteri ile bağlantıda kalmak için kullanılan en önemli metodlardandır. Kullandığınız veya üyesi olduğunuz birçok siteden gün içerisinde farklı mailler alabilmekteyiz. Örneğin, Facebook, Twitter tarzı sosyal medya hesaplarınızdan arkadaşlarınızın aksiyonları ile alakalı belirli aralıkla bilgilendirme maili almaktayız. Geliştiriciler olarak bizimde hedefimiz yapacağımız projelerde email kullanarak bu tip bilgilendirmeleri kullanıcılara aktarabilmek. Bunun en basit ve uygun yöntemi Gmail SMTP sunucularını kullanarak mail gönderimi yapmaktadır.

Daha önceki bir makalemizde PHP'de mail() metodunu kullanarak email gönderimini sizlerle paylaşmıştık. Ancak mail() metodu güvenilebilir ve kullanışlı bir metod değildir. Çünkü mail metodu ile iletilen mailler direkt sunucu üzerinden iletildiği için Spam klasörüne düşme ihtimali yüksektir. Ayrıca mail içerisine image veya herhangi bir dosya eklemek isterseniz bunu mail() metodu ile sağlayamazsınız.

Bu makalemizde popüler email sağlayıcısı olan Gmail'i kullanarak nasıl mail gönderebileceğimizi adım adım sizlerle paylaşacağız. Öncelikle SMTP kullanımının faydalarını nelerdir onu öğrenelim

  • Daha komplex ve iyi email gönderimi
  • Kendi sunucumuza kurulum gerektirmez
  • Karalisteye düşme ihtimaliniz daha düşük olacaktır. Bu nedenle emailleriniz spam klasörüne düşmez veya seyrek düşer.

Gmail SMTP kullanılarak iletilecek maillerin limiti günlük 100 maildir. Eğer bu limite ulaşırsanız, bir sonraki güne kadar beklemeniz gerekmektedir. Gmail'in mail limitleri ile alakalı daha detaylı bilgiye sahip olmak isterseniz bu linke tıklayabilirsiniz.

Gmail hesabını iki şekilde SMTP olarak kullanabiliriz;

  • Daha az güvenli uygulamalara erişim özelliğini kullanarak
  • Uygulama şifresi kullanarak

1. Gmail'de daha az güvenli uygulama erişimi özelliği

Bu yöntemde öncelikle Gmail ayarlarında bulunan daha az güvenli uygulamalara erişim iznini açmanız gerekmektedir. Google bu ayarı açmanızla birlikte artık mail adresinize ait orijinal şifreyi kullanarak mail atılmasına izin verdiğinizi kabul etmektedir. Bu ayarı gerçekleştirmek için linke tıklayabilirsiniz.

 

2. Gmail'de uygulama şifresi özelliği

Uygulama şifresi özelliği ile Gmail geçici bir şifre tanımlamanıza imkan sunmaktadır. Burada izlenmesi gereken adımlar şu şekildedir;

a. Öncelikle Gmail hesabınıza ait güvenlik sayfasına buradan tıklayarak erişiniz.

b. Bu sayfada aşağıda bulunan Google'da oturum açma alanına geliniz. Bu alanda bulunan 2 adımlı doğrulama seçeneği kapalı ise açmanız gerekmektedir. Bunun için 2 Adımlı Doğrulama seçeneğine tıklayın.

c. Açılan sayfada Başlata basıp iki adımlı doğrulamada seçeceğiniz metodu belirleyin. Burada SMS, Arama, Telefonunuzdaki Gmail hesabı vs metodları bulunmaktadır. En pratik olan Gmail hesabı kurulu olan telefonunuza mobil bildirim gelmesi konusudur. Sonrasında ayrıca SMS veya telefon araması ile doğrulama yapmanız gerekmektedir.

Bu işlemin ardından 2 adımlı doğrulama seçeneğiniz aktif hale gelmiştir. Ayrıca güvenlik sayfasınıza geri döndüğünüzde artık Uygulama şifreleri alanınında gözüktüğünü gözlemleyebilirsiniz. Güvenlik sayfasına erişim için buraya tıklayınız.

d. Uygulama şifreleri sayfasına buraya tıklayarak erişebilirsiniz. Açılan sayfada sizden uygulama tipi ve cihaz seçimi talebinde bulunacaktır. Bunun önemli bir yanı yoktur. Genellikle uygulama tipi kısmına Diğer secip projemin ismini yazmaktayım. Böylelikle Gmail SMTP özelliğini farklı projelerde kullammak istediğimde farklı şifreler oluşturabilirim.

e. Diğer seçeneği seçilip uygulamanıza ait isim girdikten sonra Oluştur butonuna basınız. Sonrasında popup ekranda 16 karakterli uygulama şifreniz aşağıdaki şekilde görüntülenecektir. Bu şifreyi başkaları ile paylaşmayınız. Orjinal Gmail şifresinin görünmesi kadar güvenlik problemi içermez ancak bu bilgiye sahip olan herhangi bir kişi sizin adınıza SMTP üzerinden mail atabilir!

Böylelikle Gmail adresimizi direkt mail gönderimi yapacak şekilde ayarlamış olduk. İkinci method ile yapılan gönderimlerin ne kadar önemli olduğunu tekrardan vurgulamak istedim. Şimdi SMTP sunucularında gerekli config ayarları nelerdir. Onları inceleyelim. Gmail'e ait SMTP ayarları aşağıdaki gibidir;

  • SMTP Sunucusu: smtp.gmail.com
  • SMTP Kullanıcı Adı: Gmail adresiniz, örneğin yazilimdersi@gmail.com
  • SMTP Şifresi: Gmail şifreniz veya uygulama şifreniz
  • SMTP Port: 587 veya 465
  • TLS/SSL: Gerekli

PHPMailer ile Mail Gönderimi

Şu an elimizde kodlamada kullanılacak olan SMTP sunucuya ait config bilgileri bulunmakta. En popüler PHP kütüphanesi olan PHPMailer ile SMTP ayarını yapıp mail atabileceğimiz örnek bir kod geliştirelim. Aşağıdaki adımları izleyerek projemizi oluşturalım.

a. Öncelikle bu linke tıklayarak PHPMailer kütüphanesinin Github kodlarına erişelim. Buradaki Github kodlarını Clone or Download seçeneğine tıklayarak bilgisayarınıza indirin.

b. İndirme işleminin ardından indirilen projede examples dizini altında gmail.phps dosyası bulunmaktadır. Bu dosya içerisinde halihazırda tanımlanmış Gmail ayarları bulunmaktadır.

use PHPMailer\PHPMailer\PHPMailer;

require '../vendor/autoload.php';

//Create a new PHPMailer instance
$mail = new PHPMailer;

//Tell PHPMailer to use SMTP
$mail->isSMTP();

//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;

//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
// use
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6

//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;

//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'tls';

//Whether to use SMTP authentication
$mail->SMTPAuth = true;

//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "username@gmail.com";

//Password to use for SMTP authentication
$mail->Password = "yourpassword";

//Set who the message is to be sent from
$mail->setFrom('from@example.com', 'First Last');

//Set an alternative reply-to address
$mail->addReplyTo('replyto@example.com', 'First Last');

//Set who the message is to be sent to
$mail->addAddress('whoto@example.com', 'John Doe');

//Set the subject line
$mail->Subject = 'PHPMailer GMail SMTP test';

//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML(file_get_contents('contents.html'), __DIR__);

//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';

//Attach an image file
$mail->addAttachment('images/phpmailer_mini.png');

//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

Bu projede Gmail SMTP sunucunun sorunsuz çalışması için bize ait olan kullanıcı adı (username), şifre (password) ve email alıcı adresi (email recipient address) verilerinin değiştirilmesi gerekmektedir. Ayrıca dosya ismini gmail.php olarak güncellemeniz gerekmektedir.

Artık projemiz mail gönderimine uygun şekilde. Tek yapmanız gereken proje kodlarını web sunucunuzda bir uygulama altına koymanız. Sonrasında http://projeniz.com/PHPMailer-master/examples/gmail.php linki gibi bir link üzerinden kodunuzu çalıştırdığınızda mail atma işleminin başarılı şekilde gerçekleştiğini gözlemleyebilirsiniz.

Wordpress Mail SMTP ile Email Gönderimi

Dünyanın en popüler blog yapısı olan Wordpress'te bir websiteniz varsa ve mail gönderimi yapmak istiyorsanız, WP Mail SMTP pluginini indirip kullanabilirsiniz.

a. Öncelikle yapmanız gereken Wordpress sitenize ait admin sayfasına giriş yapınız.

b. Sonrasında solda bulunan menüden Eklentiler >> Ekle sekmesine tıklayınız.

c. WP Mail SMTP diye arama yaparak eklentiyi yükleyiniz.

d. Yükleme işleminin ardından Eklentiler > Yüklü Eklentiler sayfasını açıp Ayarlar‘a tıklayın ve WP Mail SMTP ayarlarına erişelim.

e. Açılan ayarlar sayfasında bize ait olan SMTP bilgilerinin eksiksiz olarak girilmesi gerekmektedir.

 

Yukarıda rakamlarla tanımlanan alanların bilgileri şu şekildedir;
  • SMTP Host – smtp.gmail.com olarak giriniz.
  • SMTP Port – Varsayılan Gmail SMTP sunucu portu (SSL için 465 ve TSL için 587’dir).
  • Şifreleme – Şifreleme kullanmak her zaman önerilir. Yukarıda seçtiğiniz porta uygun şekilde seçiniz.
  • Doğrulama – SMTP doğrulama gerekli olduğundan Evet’i seçin.
  • Kullanıcı adı – Gmail adresiniz.
  • Şifre – Gmail şifreniz veya Uygulama şifreniz.

Yukarıdaki alanları doğru şekilde doldurduktan sonra Değişiklikleri Kaydedin butonuna tıklayınız. Sonrasında yapılan ayarların doğru olduğundan emin olmak için WP Mail SMTP plugininin sunduğu Send Test ekranı üzerinden test mesajı atabilirsiniz.

 

Böylelikle makalemizde Gmail hesabımızı nasıl SMTP server olarak ayarlayıp projelerimizde kullanacağımızı öğrendik. Ayrıca PHPMailer veya WP Mail SMTP kullanarak mail gönderimlerinin nasıl gerçekleştirildiğinin adım adım inceleme imkanı bulduk.
comments powered by Disqus