PHPMailer Sınıfı ile Gmail Üzerinden E-Posta Gönderimi

Öncelikle bu sınıfı yazana bir teşekkür edelim 🙂 Daha sonra ise ilk olarak sınıfı indireceğiniz adresi vereyim;

https://code.google.com/a/apache-extras.org/p/phpmailer/

Burada tahmin edebileceğiniz gibi “downloads” sekmesinden en çok indirileni indiriyoruz.

Not: Eğer indirme adresinde ssl’den dolayı hata alırsanız “yine de devam et” diyerek indirme işlemine devam edin.


İndirdiğiniz zip dosyasını açtığınızda bir sürü dosya ile karşılaşacaksınız. Onların içinden şu 2 dosyayı alın ve zip’i kapatın.

– class.phpmailer.php
– class.smtp.php

Ben herhangi bir form hazırlamadan kullanımını göstereceğim. Daha sonra demosunu incelediğiniz şeyin dosyalarını bu sayfanın en altından indirebileceğinizi unutmayın 🙂

Adım Adım E-Posta Gönderme İşlemi

Evet ilk olarak bir php dosyası oluşturalım (yukarıdaki 2 dosya ile aynı yerde olsun).. Ve daha sonra içini açıp kodlarımızı yazmaya başlayalım;

include "class.phpmailer.php";

Sınıf dosyasını dahil ettik.

$mail = new PHPMailer();

PHPMailer sınıfını başlattık.

$mail->IsSMTP();

SMTP kullanarak e-posta göndereceğimizi söyledik.

$mail->SMTPAuth = true;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->Username = '[email protected]';
$mail->Password = 'ŞİFRE';

Gmail için ayarlarımızı burada yapılandırıyoruz. Sizin yapmanız gereken tek şey, maili gönderecek hesabın bilgilerini girmek o kadar.

$mail->SetFrom($mail->Username, 'Tayfun Erbilen');

E-postayı kimin gönderdiğini tanımlıyoruz. E-posta -> Ad soyad şeklinde.

$mail->AddAddress('[email protected]', 'gönderilen kişinin adı soyadı');

Kime e-posta göndermek istiyorsak e-posta -> adsoyad şeklinde ekliyoruz.

$mail->CharSet = 'UTF-8';

Karakter serini global olan utf8 olarak ayarlıyoruz.

$mail->Subject = 'E-POSTA KONUSU';

Konuyu belirliyoruz.

$content = '<div style="background: #eee; padding: 10px; font-size: 14px">Bu bir test e-posta\'dır..</div>';
$mail->MsgHTML($content);

E-posta içeriğini belirliyoruz. İster bir değişkenden alabiliriz, istersekte file_get_contents() ile bir dosyayı okuyup gönderebiliriz, tercih sizin.

if($mail->Send()) {
    // e-posta başarılı ile gönderildi
} else {
    // bir sorun var, sorunu ekrana bastıralım
    echo $mail->ErrorInfo;
}

Gönderilip gönderilmediğini kontrol ediyoruz.

Sonuç olarak yazdığımız kodların tamamı şu şekilde;

<?php

include 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->Username = '[email protected]';
$mail->Password = 'ŞİFRE';
$mail->SetFrom($mail->Username, 'Tayfun Erbilen');
$mail->AddAddress('[email protected]', 'gönderilen kişinin adı soyadı');
$mail->CharSet = 'UTF-8';
$mail->Subject = 'E-POSTA KONUSU';
$content = '<div style="background: #eee; padding: 10px; font-size: 14px">Bu bir test e-posta\'dır..</div>';
$mail->MsgHTML($content);
if($mail->Send()) {
    // e-posta başarılı ile gönderildi
} else {
    // bir sorun var, sorunu ekrana bastıralım
    echo $mail->ErrorInfo;
}
?>

Sonuç olarak bir sorun yok ise güzel bir şekilde e-posta gönderme işlemini yapacak.. Hadi test edelim..

PHPMailer Sınıfı ile Gmail Üzerinden E-Posta Gönderimi

Ek dosya gönderimi

Mail içinde herhangi bir dosya göndermek isterseniz şu şekilde eklemeniz yeterli;

$mail->AddAttachment('prototurk.png');

Burada prototurk.png yerine göndereceğiniz herhangi bir dosyanın yoluda gelebilir 🙂

PHPMailer Sınıfı ile Gmail Üzerinden E-Posta Gönderimi

Çoklu e-posta gönderimi

Bir e-postayı birden fazla kişiye göndermek için (her yeni kişi için) AddAdress() metodunu kullanabilirsiniz. Ancak buna ek olarak AddBCC ve AddCC metodlarıda vardır..

BCC = Buraya yazılan adresler diğer gönderilen adreslerde gözükmez, bir nevi gizli gönderici diyebiliriz.

$mail->AddAddress('EPOSTA_ADRESİ', 'Ad Soyad');
$mail->AddBCC('EPOSTA_ADRESİ', 'Ad Soyad');
$mail->AddCC('EPOSTA_ADRESİ', 'Ad Soyad');

DEMO

http://www.uzmancevap.org/demo/phpmailer/

İNDİR

http://yadi.sk/d/cip-r9lr8rJSu

Not: Sınıfın düzgün şekilde e-posta gönderme işlemi yapabilmesi için sunucunuz da SMTP aktif olmalıdır.

Yayınlayan

Tayfun Erbilen

2009’dan beri web işleriyle uğraşan, aynı zamanda amatör müziklede ilgilenen sıradan birisi..

“PHPMailer Sınıfı ile Gmail Üzerinden E-Posta Gönderimi” üzerine 27 yorum

  1. Uzun zamandır merak ettiğim bir konuydu gardaşlık, eline sağlık gayet açıklayıcı olmuş.

  2. Demo'da sorun var kontrol eder misin ? 🙂 mail brkn.sahin gerisi gmail yazmayayım yollarsın sen..

  3. Merhabalar,

    Anlatımlarınızdan dolayı teşekkür ederim.

    Sanırım dalgınlığınıza gelmiş MsgHTML fonksiyonuna $mail değişkenini vermişsiniz.
    Düzenlenmiş Hali: $mail->MsgHTML($content);

    iyi çalışmalar.

  4. Teşekkürler @ibrahim, dikkat etmesen uzun süre bu hatayı göremezdim sanırım 🙂

  5. Hocam Merhaba, yapmış olduğun demo da bir terslik mi var? demo sayfanızı tıklayıp mail adresimi ve adımı yazıp gönderdiğimde mail benim adresime geliyor. Bu bir iletişim formu değil mi? yani sizin adresinize gelmesi gerekmiyor mu? bir web sitesinde iletişim formuna girip bilgilerinizi yazıp gönderdiğinizde site sahibine gider mesaj burada gönderen bilgilerini yazıyor

    1. Demoya takılmayın bu kadar. Ama merak ediyorsan söyleyeyim, hem size hem bana geliyor mailler. Size gelmesinin sebebi demonun çalıştığını anlamanızdı.

  6. merhaba hocam cevabın için teşekkürler. Demoya takılmadım, php çok bilmiyorum.
    yapmak istediğim şu
    şimdi biz aşağıdaki bilgiler ile [email protected] adresine mail gönderiyor olalım. sitemizi ziyaret eden [email protected] adresli kişi iletişim formunu doldurarak mail atınca kimden gelen kısmında [email protected] gözüküyor. Onu nasıl yapacağız anlamadım.

    $mail->Username = ‘[email protected]’;
    $mail->Password = ’11’;

  7. Merhaba,koydugunuz kodları çalıştırdıgımda PHPMailerAutoload.php yi de projenın oldugu klasöre koymamı istedi.phpmailer sınıfının 578.satırında require ile çağırılmış.daha önce kimse bahsetmemiş sanırım sadece bende olan bi sorundu.neyse şu an sorunsuz çalışıyor.teşekkürler.

  8. Sunucumzuda smtp aktif değilse şöyle bir hata mı alırız

    Fatal error: Class ‘SMTP’ not found in /home/bizimsit/public_html/mail/class.phpmailer.php on line 1090

    çünkü böyle bir hata alıyorum da

  9. Arkadaslar yeni vesiyonla birlikte
    – class.phpmailer.php
    – class.smtp.php

    dosyalarina ilaveten
    -PHPMailerAutoload.php yi de ayni dizine atin

  10. İndirdiğim dosyadaki mail adreslerini değiştirdim ve sunucuya attım. Direk çalıştı.
    Paylaşım için teşekkürler.

  11. Biraz ekleme ile zenginleştirerek ilk testte tam puan aldı. Teşekkürler bilgi paylaşımı için

  12. Konu için teşekkürler ancak denediğimde yukarda yazdıklarınızla gönderim yapılmıyordu şu şekilde düzelttim sorun çözüldü ;
    $mail->Port = 465;
    $mail->SMTPSecure = ‘ssl’;

  13. gitmesi gereken mail adresini nereye yazıcaz bu konuda bilgi verirmsiniz

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir