Bundan önceki mail formu yapımı yazımda normal mail fonksiyonu ile mail göndermeyi anlatmıştım. Şimdi o yönteme alternatif ve daha etkili olan SMTP ile mail göndermekten bahsedeceğim.

SMTP (Simple Mail Transfer Protocol) Elektronik posta gönderme protokolüdür. PHP’nin normal mail fonksiyonuyla genelde server adına ve herhangi bir doğrulama yapmadan istediğimiz bir gönderen adresi tanımlayarak göndermeye çalışıyoruz, SMTP’de ise maili gönderebilmek için gerçek bir mail hesabına ihtiyacımız var. Mail fonksiyonuna kıyasla bu şekilde gönderilen maillerin doğruluğu ve güvenilirliği daha yüksek olduğu için spam (önemsiz) klasörlerine düşme olasığı da azdır.

Ayrıca yazının resmini öylesine Gmail yapmadım. SMTP ile kendi sunucunuzdan başka mail hesaplarınız adına da mail atabiliyorsunuz, ki ben bu yöntemi özellikle bu amaç için kullanıyorum. Kendi mail sunucumu kullanmak yerine kendi domainimin mail DNS (MX) ayarlarını Gmail’e yönlendirip SMTP ile mail gönderiyorum . Bu sayede gönderdiğim mesajların spama düşmesi gibi bir durum söz konusu olmuyor.

 

 

PHP SMTP Sınıfı: PHPMailer

 

Bu olay için sıfırdan nasıl kodlanacağını değil, var olan çok özellikli açık kaynak SMTP sınıfını nasıl kullanacağımızı göstereceğim.

Kullanımı inanın gayet basit ve mail olaylarıyla alakalı istediğiniz her şeyi yapmak mümkün (dosya göndermek, birden fazla alıcı eklemek, yanıt adresini değiştirmek vs.)

 

 

Mail Göndermek

 

PHPMailer sınıfı ile SMTP mail göndermek için “class.phpmailer.php” ve “class.smtp.php” dosyalarını alıp aşağıdaki kod bloğunu kullanmanız yeterli. İlgili yerlere kendi sunucunuzun host, port ve kullanıcı adı şifre bilgilerinizi girin.

<?php
include ‘class.phpmailer.php’;

a$mail->IsSMTP();

$mail->SMTPAuth = true;

$mail->Host = ‘smtp.sitem.com’;

$mail->Port = 587;

$mail->Username = ‘benim@adresim.com’;

$mail->Password = ‘çokgizlişifre’;

$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;

}
?>

 

 
Olay bu kadar düzenli ve basit. Eğer yukarıda da bahsettiğim gibi kendi sunucunuzu kullanmak yerine varolan Gmail hesabınız ile bu olayı kullanmak istiyorsanız yukarıdaki host ve port bölümü aşağıdaki gibi değiştirin:

Mail ile dosya göndermek

 

<?php
$mail->Host = ‘smtp.gmail.com’;

$mail->Port = 587;

$mail->SMTPSecure = ‘tls’;
?>

Göndereceğiniz mailin içerisine dosya eklemek için AddAttachment metodunu kullanacağız. Örneğin bir resim göndermek için:

<?php
$mail->AddAttachment(‘img/gonderilecek_resim.jpg’);
?>

Birden fazla kişiye göndermeBu kadar basit.

 

Birden fazla alıcı eklemek için ekstra bir şeye ihtiyaç yok. Yukarıda alıcı adresi tanımladığımız AddAddress metodunu tekrar kullanabiliriz. Ama eğer CC ya da BCC eklemek istiyorsanız onun için de AddCC ya da AddBCC metodlarını kullanmanız yeterli.

 

<?php

$mail->AddAddress(‘baska@biri.com’, ‘Başkası’);

$mail->AddCC(‘baska@iki.com’, ‘Diğeri’);

$mail->AddBCC(‘baska@ucu.com’, ‘Öteki’);

?>

Yanıt adresini değiştirme Yeri gelmişken CC ile BCC arasından da bahsetmek gerekirse; CC: “Carbon Copy” yani bir kopyasını da bu şekilde eklenmiş adreslere gönderir. BCC: “Blend Carbon Copy” CC ile aynı tek farkı buraya yazılan adresler diğer gönderilen kişilerde gözükmez.

Eğer gönderdiğiniz adrese değilde başka bir adrese cevap yazılmasını istiyorsanız AddReplyTometodu ile cevap atılmasını istediğiniz mail adresini yazmanız yeterli.

 

 

<?php
$mail->AddReplyTo(‘cevaplar@buraya.com’, ‘Cevapçı’);

?>


Spamsız mailler dileğiyle, bir başka PHP serüveninde görüşmek üzere hoşçakalın!