Kadir Kasim | Freelance Code Developer

kadir kasim


Yıldız Teknik Üniversitesi Mezunu

Matematik Mühendisi

Yazılımcı

California - Kütahya - İstanbul - Maryland güzargahında 29 yıllık göçebe bir yaşam

Kız labrador babası

Kitapsever keyif insanı

Resim bir bilimdir ve tüm bilimler matematiğe dayanır. İnsanın ortaya koyduğu hiçbir şey; matematikte yerini bulmaksızın bilim olamaz.

Leonardo Da Vinci

PHPMailer email oluşturmak ve göndermek için geliştirilmiş içerisinde işlevsel sınıflar bulunduran güçlü bir kütüphanedir. SMTP protokolünü etkin bir biçimde kullanabilmemize olanak sağlar. PHPMailer’ın en güçlü yanı doğrudan SMTP ile veya gmail üzerinden mail gönderebilmesidir. Ayrıca emaillerde ek dosya gönderebilmenin en kolay ve hızlı yollarından birisidir.

Hemen kurulumunu anlatarak başlayalım.

Eğer Composer kullanacağım diyorsanız terminal’i açıp dosyaları yüklemek istediğiniz dizine gidin ve aşağıdaki kodu çalıştırın.

composer require phpmailer/phpmailer

Dosyaları başarıyla indirdiyseniz , kurulumu tamamlamak için aşağıdaki kodları projenize dahil edin.

use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require ‘vendor/autoload.php';

Yok ben dosyayı kendim indiririm diyorsanız.GitHub üzerinden kütüphaneyi bilgisayarınıza indirebilir. İndirdiğiniz dosyanın adını PHPMailer olarak değiştirip projenizin ana dizinine taşıyıp aşağıdaki kodları projenize dahil edebilirsiniz.

use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'PHPMailer/src/Exception.php'; require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php';

Not : Exception.php daha düzgün hata raporları almak içindir isterseniz silebilirsiniz..


Artık projemize PHPMailer kütüphanesini dahil ettiğimize göre adım adım kullanımını inceleyebiliriz.

Öncelikle basit bir örnekle PHPMailer nesnesini tanıyalım.


Öncelikle PHPMailer sınıfından nesnemizi oluşturuyoruz.

$mail = new PHPMailer;

Emaili gönderenin bilgilerini tanımlıyoruz.

$mail->From = “ben@kadirkasim.com"; $mail->FromName = "Kadir Kasim";

Emaili göndereceğimiz adresi belirtiyoruz.

$mail->addAddress(“kdrksm@gmail.com", "Kasim Kadir");

Email konusunu yazıyoruz.

$mail->Subject = "PHPMailer Test";

Email içeriğimizin html ile oluşturulacağını tanımlıyoruz.

$mail->isHTML(true);

Email içeriğini oluşturuyoruz.

$mail->Body = “<h1>Örnek Html Email</h1> <p>Burasi ornek email icerigidir...</p>”;

Emailimize gönderilecek bir dosya ekliyoruz.

$mail->addAttachment('resimler/ekDosya.png');

Email gönderiyoruz.

$mail->send();

Son olarak kodlarımızı bir bütün haline getirelim ve emailin oluşturulduğu if ile kontrol edelim..


use PHPMailer\PHPMailer\PHPMailer; require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; $mail = new PHPMailer; $mail->From = “ben@kadirkasim.com"; $mail->FromName = "Kadir Kasim"; $mail->addAddress(“kdrksm@gmail.com", "Kasim Kadir"); $mail->isHTML(true); $mail->Subject = "Deneme"; $mail->Body = “<h1>Örnek Html Email</h1> <p>Burasi ornek email icerigidir...</p>”; $mail->addAttachment('resimler/ekDosya.png'); if($mail->send()) { echo "Email sorunsuz gönderildi…"; } else { echo "Hata : " . $mail->ErrorInfo; }

Yukarıdaki kod bloğunun temelde mail() fonksiyonundan bir farkı yoktur. Dolasıyla mail fonksiyonunda karşılaşılacak hatalar ile bu kod bloğunda da karşılaşılabilir.

Şimdi PHPMailer'ın alamet-i harikası olan doğrudan SMTP ile mail gönderiminin nasıl olduğunu inceleyelim.


SMTP kullanacağımızı belirtelim.

$mail->isSMTP();

Mail sunucusunu tanımlayalım.

$mail->Host = 'mail.kadirkasim.com';

Hangi portu kullanacağımızı belirtelim. 25 zaten varsayılan porttur.

$mail->Port = 25;

SMTP Kimlik bilgisi doğrulamayı başlatalım ve kullanıcı adı ve şifremizi girelim.

$mail->SMTPAuth = true; $mail->Username = 'ben@kadirkasim.com'; $mail->Password = 'PAROLA';

Gönderen bilgisini girelim, Eğer cevaplama adresini değiştirmek isterseniz ikinci satır tamda bunun için..

$mail->setFrom('ben@kadirkasim.com', 'Kadir Kasim'); $mail->addReplyTo('info@kadirkasim.com', 'Kadir Kasım');

Tüm bu kodları bir araya getirdiğimiz de :

use PHPMailer\PHPMailer\PHPMailer; require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'mail.kadirkasim.com'; $mail->Port = 25; $mail->SMTPAuth = true; $mail->Username = 'ben@kadirkasim.com'; $mail->Password = 'PAROLA'; $mail->setFrom('ben@kadirkasim.com', 'Kadir Kasim'); $mail->addReplyTo('info@kadirkasim.com', 'Kadir Kasım'); $mail->isHTML(true); $mail->Subject = "SMTP Test"; $mail->Body = “<h1>Örnek Html Email</h1> <p>Burasi ornek email icerigidir...</p>”; if($mail->send()) { echo "Email sorunsuz gönderildi…"; } else { echo "Hata : " . $mail->ErrorInfo; }

Neden SMTP protokolü yapılandırılarak mail gönderdiğimizi daha detaylı anlatmak gerekirse : Temelde bütün mail gönderimleri SMTP ile gerçekleşir. Biz bir mail gönderme isteği oluşturduğumuzda genellikle kendi mail sunucumuz bu isteği kabul edecektir. Ancak mailin ulaştırılması POP3 olarak adlandırılan başka bir protokol ile olmakta ve işte bu iki protokolün bilgi alış verişinde bulundukları sırada alıcı mail sunucusu bizim mailimizi spam olarak işaretleyebilir. Çünkü mail() fonksiyonu da ilk örneğimiz de mail gönderme işlemini SMTP doğrulaması olmadan, kullanıcı adı ve şifresi kullanmadan başlatmakta bu da alıcı mail sunucusu için risk teşkil etmekte.

Ayrıca mail() fonksiyonu her kullanıldığında SMTP isteği açar ve kapatır. İhtiyac duyulduğunda bir döngü içerisinde sırayla mail atmanız gerektiğinde sistemin şişmesine, hata almanıza sebebiyet verecektir.

Tartışma Başlatmak İster Misiniz ?

Eposta adresiniz paylasılmayacaktır..

Daha Önceki Yazılar