Php ile Smtp Mail Göndermek

Mailin direkt olarak spam olarak algılanıp gereksiz kutusuna düşmesini engellemek için bir yol...

Php ile Smtp Mail Göndermek

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 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 konuyla alakalı detaylı bilgi için tıklayın). Bu sayede gönderdiğim mesajların spama düşmesi gibi bir durum söz konusu olmuyor.

Bir çok Hosting firmasında  php mail() fonksiyonu kapalı durumdadır. Bu fonksiyonun kapalı tutulmasının nedeni, php mail() fonksiyonunda hiçbir doğrulama olmadan direk olarak mail gönderilebilmesidir. Bu da mailin direkt olarak spam olarak algılanıp gereksiz kutusuna düşmesine neden olur. Fazla gönderimlerde de sunucu ip adresi karalisteye girer.

PHP SMTP Sınıfı: PHPMailer

Şimdi Php üzerinden Smtp bağlantısı yaparak nasıl mail gönderilir göreceğiz. Bunun için PHPMailer kütüphanesini kullanacağız.

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.). Bu sınıf hakkında daha fazla bilgi ve örnek çalışma için şuraya bakabilirsiniz.

PHPMailer kütüphanesini buradan indirebilirsiniz. Ayrıca bu güzel sınıfa şu adresten ulaşıp şuralardan güncel sürümünü indirebilirsiniz.

class.phpmailer.php, class.smtp.php ve class.pop3.php dosyalarını mail formumuz ile aynı dizine atıyoruz.

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.

Mail formumuzun kodları:

include 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 1; // hata ayiklama: 1 = hata ve mesaj, 2 = sadece mesaj
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl'; // Güvenli baglanti icin ssl normal baglanti icin tls
$mail->Host = "mail.siteismi.com"; // Mail sunucusuna ismi
$mail->Port = 465; // Guvenli baglanti icin 465 Normal baglanti icin 587
$mail->IsHTML(true);
$mail->SetLanguage("tr", "phpmailer/language");
$mail->CharSet  ="utf-8";
$mail->Username = "isim@siteismi.com"; // Mail adresimizin kullanicı adi
$mail->Password = "PASSWORD"; // Mail adresimizin sifresi
$mail->SetFrom("isim@siteismi.com", "Isim"); // Mail attigimizda gorulecek ismimiz
$mail->AddAddress("ahmetmakal@msn.com"); // Maili gonderecegimiz kisi yani alici
$mail->Subject = "Mesaj Basligi"; // Konu basligi
$mail->Body = "Mesaj icerigi"; // Mailin icerigi
if(!$mail->Send()){
    echo "Mailer Error: ".$mail->ErrorInfo;
} else {
    echo "Mesaj gonderildi";
}
 
 
 
 

Doldurulması gereken kısımları kodların arkasında yazdım.

Şimdi ücretsiz mail hizmeti veren Gmail ve Yandex için gereken ayarları görelim.

Yandex Smtp Ayarları:

$mail->SMTPSecure = 'tls';
$mail->Host = 'smtp.yandex.com';
$mail->Port = 587;

  Gmail Smtp Ayarları:

$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465; //587

Mail ile dosya göndermek:

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

$mail->AddAttachment('img/gonderilecek_resim.jpg');

Birden fazla kişiye gönderme:

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.

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

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

$mail->AddReplyTo('cevaplar@buraya.com', 'Cevapçı');

 

Hazır Scriptler İçin Smtp Mail Ayarları:

Gelelim hazır yazılımlar için Smtp ayarlarının nasıl yapılması gerektiğine. Hazır yazılımların bazılarında PHPMailer kütüphanesini bulunur ve arkada çalışır. Admin arayüzünden bu ayarlar yapılır. Örnek olarak bazı yazılımlardaki ayarları aşağıda iletiyorum.

Wordpress için WP Mail SMTP eklentisini kurmamız gerekiyor. Ayarlar > Email bölümünden aşağıdaki ayarları uygulayınız. From Email: isim@siteismi.com From Name: İsim Mailer: Send all WordPress emails via SMTP. SMTP Host: localhost SMTP Port: 465 Encryption: Use SSL encryption. Authentication: Yes: Use SMTP authentication. Username: isim@siteismi.com Password: mailsifresi

vBulletin İçin Smtp Ayarları: vBulletin Seçenekler > E-Mail ayarları Buradan Emailleri SMTP-Serveri aracılığı ile gönder seçiyoruz

SMTP-Serveri: mail.siteadresiniz.com SMTP Portu: 465 SMTP Kullanıcı Adı: isim@siteismi.com SMTP Şifresi: Email adresinizin şifresi SMTP-Serverine garantili bağlanma: SSL

SMF İçin Smtp Ayarları: Ayarlara ulaşabilmek için Yönetim Masası > Bakim > E=Posta kısmına giriyoruz. E-Posta türü: SMTP SMTP sunucusu: ssl://localhost yada ssl://mail.siteadresiniz.com SMTP bağlantı noktası: 465 SMTP kullanıcı adı: isim@siteismi.com SMTP şifresi: Email adresinizin şifresi

OpenCart İçin Smtp Ayarları: Ayarlara ulaşabilmek için System > Settings > Mail kısmına giriyoruz. Mail Protocol: SMTP SMTP Host: ssl://localhost yada ssl://mail.siteadresiniz.com SMTP Username: isim@siteismi.com SMTP Password: Email adresinizin şifresi SMTP Port: 465

Diğer yazılımlar için de aynı ayarları yaparak Smtp ile mail gönderimi yapabilirsiniz.

 

Kaynaklar

Yorumunuzu Ekleyin

$_ENV
Yükleniyor...