Adım Adım PHP Kullanarak SMTP İle Mail Gönderme İşlemi
Yazının başlığından da anlayacağınız üzere bu işlem için PHPMailer isimli php sınıfını kullanacağız. Kodlara geçmeden evvel buradan sınıfımızın son sürümünü indiriyoruz. Hangi dosyayı indirmem lazım diye tereddüt eden arkadaşlar en çok indirme sayısına sahip zip uzantılı dosyayı indirebilirler.
İndirdiğiniz arşiv dosyasından class.phpmailer.php ve class.smtp.php isimli iki dosyayı alarak projenizin bulunduğu klasöre kopyalamanız gerekiyor.
İki dosyayı kopyaladıktan sonra mail gönderim işlemini yapacağımız dosyayı oluşturuyoruz ve aşağıdaki kod ile PHPMailer sınıfını dosyaya dahil ediyoruz ve ikinci satırdaki kod ile sınıfımızı başlatıyoruz.
include "class.phpmailer.php";
$mail = new PHPMailer();
Aşağıdaki satır yardımıyla da sınıfımıza e-postamızı SMTP yoluyla göndereceğimizi söylemiş olduk.
$mail->IsSMTP();
Şimdi sıra geldi SMTP ile ilgili kullanıcı adı, parola, port gibi ayarların yapıldığı satırlara.
$mail->SMTPAuth = true;
$mail->Host = 'smtp.siteadi.com';
$mail->Port = 587;
$mail->Username = 'sizinadresiniz@siteadi.com';
$mail->Password = 'sifreniz';
E-postanın kimin adına gönderildiğini aşağıdaki satır yardımıyla ayarlayabiliyoruz.
$mail->SetFrom($mail->Username, 'Ahmet İşcan');
Yine benzer şekilde e-postayı göndereceğimiz kişinin bilgilerini de ayarlıyoruz.
$mail->AddAddress('gonderilecekadres@siteadi.com', 'gönderilecek kişinin adı soyadı');
Göndereceğiniz e-postanın karakter setini de aşağıdaki satırdaki gibi belirtebilirsiniz. Bunu UTF-8 olarak bırakmanızı tavsiye ederim.
$mail->CharSet = 'UTF-8';
Kişilerle ilgili ayarları tamamladığımıza göre şimdi de göndereceğimiz e-posta ile ilgili ayarlara geçebiliriz.
$mail->Subject = 'E-Posta Konusu';
$mail->MsgHTML('E-posta İçeriği');
Son olarak da aşağıdaki satırlar yardımıyla gönderim işlemini tamamlıyoruz. If koşulu yardımıyla gönderim başarılı/başarısız olduğu durumlarda yapılacakları da burada belirtiyoruz.
if($mail->Send()) {
echo 'E-posta başarıyla gönderildi.';
} else {
echo 'E-posta gönderilirken bir hata oluştu. Hata bilgisi aşağıdadır.
';
echo $mail->ErrorInfo;
}
Toparlayacak olursak yazdığımız kodların tamamı aşağıdaki gibi olacaktır. Yazının sonuna sık karşılaşılan problemlerle ilgili birkaç not yazacağım lütfen onları da okuyun.
include "class.phpmailer.php";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.siteadi.com';
$mail->Port = 587;
$mail->Username = 'sizinadresiniz@siteadi.com';
$mail->Password = 'sifreniz';
$mail->SetFrom($mail->Username, 'Ahmet İşcan');
$mail->AddAddress('gonderilecekadres@siteadi.com', 'gönderilecek kişinin adı soyadı');
$mail->CharSet = 'UTF-8';
$mail->Subject = 'E-Posta Konusu';
$mail->MsgHTML('E-posta İçeriği');
if($mail->Send()) {
echo 'E-posta başarıyla gönderildi.';
} else {
echo 'E-posta gönderilirken bir hata oluştu. Hata bilgisi aşağıdadır.
';
echo $mail->ErrorInfo;
}
SMTP İle Gönderilen E-postaya Dosya Eklemek
Bazen gönderdiğiniz e-postalara dosya eklemeniz gerekebilir. Bunun için AddAttachment parametresi işinizi görecektir. Aşağıdaki kodda göreceğiniz üzere ek olarak eklenecek olan dosyanın yolunu yazmanız yeterlidir.
$mail->AddAttachment('klasor/dosya.jpg');
Birden Fazla Kişiye E-Posta Göndermek
Birden fazla kişiye e-posta göndermek için AddAddress parametresini kullanmanız yeterli olacaktır. Ama eğer CC ya da BCC olarak eklemek istiyorsanız onun için de kodunuza AddCC ya da AddBCC parametrelerini eklemeniz yeterli olacaktır. Aşağıdaki kodda üçüyle ilgili örneği de görebilirsiniz.
$mail->AddAddress('yenikisi@siteadi.com', 'Yeni Kişi');
$mail->AddCC('cckisi@siteadi.com', 'CC Kişi');
$mail->AddBCC('bcckisi@siteadi.com', 'BCC Kişi');
Gönderilen E-postanın Yanıt Adresini Değiştirmek
Son olarak da gönderdiğimiz e-postaya yapılacak yanıtlamaların başka bir e-postaya gitmesini istiyorsak onu PHPMailer sınıfına nasıl belirteceğimizi göreceğiz. AddReplyTo parametresi ile yanıt adresini belirtebilirsiniz.
$mail->AddReplyTo('yanitadresi@siteadi.com', 'Yanıt Kişi');
PHPMailer Sınıfı ve SMTP Protokolü İle İlgili Birkaç Not
Not 1: SMTP portu her zaman için 587 olmak zorunda değildir. Bazı sunucularda 25 portuna ya da başka bir porta ayarlanmış olabilir.
Not 2: SMTP ile mail gönderimini Gmail sunucuları üzerinden yapacaksanız port ayarının yapıldığı satırdan sonra $mail->SMTPSecure = ‘tls’; kodunu eklemelisiniz.
Not 3: Unutmayın ki gönderici adres kısmına ne yazarsanız yazın SMTP ile e-posta gönderirken hangi hesabın giriş bilgilerini yazarsanız e-postayı onun adına gönderecektir.
Not 4: Bir formdan gelen dosyayı e-posta ile göndermek istiyorsanız önce o dosyayı sunucunuza yüklemeli daha sonra maili gönderirken yüklediğiniz yolu PHPMailer sınıfına göstermelisiniz. Dosya yolunu gösterme işlemini yukarıda göstermiştim.
Kaynak: PHPMailer Sınıfı İle SMTP’den Mail Gönderme