7 Ocak 2014

PHP, phpmailer Kütüphanesi ile Smtp Üzerinden Mail Gönderme İşlemleri

(Düzeltme (24.11.2014) : kütüphanelerin güncellenmesi nedeniyle kod çalışmıyor olabilir. Kütüphanenin de içinde bulunduğu test kodlarını buradan indirebilirsiniz.
https://github.com/muhammedtanriverdi/php-mailer )

Bu yazımda php ile smtp üzerinden mail göndermeyi basit bir şekilde anlatmaya çalışacağım.
Kullandığım güzel bir php mail kütüphanesi var. https://github.com/PHPMailer/PHPMailer
Kütüphaneyi indirdikten sonra işlemlerimize başlayabiliriz.

Kodlar (içerisinde gerekli yorumlarla birlikte) :


<?php

/// Gelen email adresine basligi ve icerigi kullanalarak mail olusturup yollar
/// $to_email = Alici kisi email adresi
/// $subject = 'Email basligi';
/// $body = '<b> Email Icerigi </b>';
/// return basarili = true, basarisiz = false
function smtp_mail_gonder($to_email, $subject, $body)
{
 try
 {
  // class.phpmailer.php dosyasinin adresi
  require_once('PHPMailer_v5.1/class.phpmailer.php');
  $mail = new PHPMailer();

  // Smtp kullanilip kullanilmayacagi
  $mail->IsSMTP();
  
  // debugging: 1 = errors and messages, 2 = messages only
  $mail->SMTPDebug = 0;  
  
  // Dogrulama aktif
  $mail->SMTPAuth = true;  
  
  // Utf-8 olarak ayarliyoruz, turkce karakter destegi icin
  $mail->CharSet = 'UTF-8';
  
  // email icerigini html formatinda yollama aktif
  $mail->IsHTML(true);
  
  // Smtp bilgileri
  $mail->Host = 'smpt.domain.com';
  
  // Mailin kim tarafindan yollanaci bilgileri
  $mail->Username = 'email_adresi@kodyazma.com';  
  $mail->Password = 'sifre';

  // Alici kisi eklenir
  $mail->AddAddress($to_email);
  
  // Kim tarafindan gonderildi gosterilecegi
  $mail->From         = 'email_adresi@kodyazma.com';
  $mail->FromName     = 'KodYaz-ma';
  $mail->Subject      = $subject;
  $mail->Body         = $body;
  
  if($mail->Send()) 
  {
   echo 'Basarili';
   return true;
  } 
  else
  {
   echo 'Basarisiz';
   return false;
  }
 }
 catch(Exception $e)
 {
  echo 'Hata olustu';
  return false;
 }
}
?>

gmail için

$mail->SMTPSecure = 'ssl'; // gmail için ssl gerekli
$mail->Host = "smtp.gmail.com";  // gmail smtp adresi
$mail->Port = 465; // ya da 587, gmail için gerekli port

Mail adresinden smtp bilgileri öğrenmek:

Burada smtp adresinizi bilmiyor olabilirsiniz. Hemen nasıl öğrenebileceğimizi anlatayım. Çeşitli yolları var. Mail sağlayıcınızın arayüz sayfasında bulabilirsiniz. Ya da outlook'ta ya da benzeri mail programlarında gelen bir mailin header kısmında da bulabilirsiniz.
Ya da
Windows komut satırı yardımıyla da bulabiliriz. Bunun için windows + R sonrasında cmd yazıp komut satırını açarız.
Mesela test@hotmail.com mail adresi için
Sırası ile komutlar : (her komuttan sonra enter)
nslookup
set type=MX
hotmail.com



Bazı bilinen smtp adresleri:

PROVIDER
URL
SMTP
1&1
1and1.com
Smtp.1and1.com
Airmail
Airmail.net
Mail.airmail.net
AOL
Aol.com
Smtp.aol.com
AT&T
Att.net
Outbound.att.net
Bluewin
Bluewin.ch
Smtpauths.bluewin.ch
BT Connect
Btconnect.com
Mail.btconnect.tom
Comcast
Comcast.net
Smtp.comcast.net
Earthlink
Earthlink.net
Smtpauth.earthlink.net
Gmail
Gmail.com

Smtp.gmail.com
Gmx
Gmx.net
Mail.gmx.net
HotPop
Hotpop.com
Mail.hotpop.com
Libero
Libero.it
Mail.libero.it
Lycos
Lycos.com
Smtp.lycos.com
O2
o2.com
Smtp.o2.com
Orange
Orange.net
Smtp.orange.net
Outlook.com (former Hotmail)
Outlook.com
Smtp.live.com
Tin
Tin.it
Mail.tin.it
Tiscali
Tiscali.co.uk
Smtp.tiscali.co.uk
Verizon
Verizon.net
Outgoing.verizon.net
Virgin
Virgin.net
Smtp.virgin.net
Wanadoo
Wanadoo.fr
Smtp.wanadoo.fr
Yahoo
Yahoo.com
Mail.yahoo.com
Tablo Kaynak : http://www.serversmtp.com/en/smtp-settings

Umarım yardımcı olabilmişimdir...


6 yorum:

  1. benmi yanlış yapıyorum kodlarmı çalışmıyor anlayamadım

    YanıtlaSil
  2. 1 tane hata var. 1. si ve en önemlisi. ya bu mail sistemleri menapoza girdi. bu gün calışan yarın çalışmıyor. anlıycanız calışmıyorlar
    2. yazdıgın fonksiyonu çagırmadın.
    hocan rica ediyorum. bu kodu bir calıştır.
    ilk önce fonksiyonu altta cağırmadın onun bir hatası var.
    mailim alon1e@mynet.com
    bana her hangi bir mailinden mail gönderirmisin bu kodla. yada calısan bir versiyonunu gönderebilirmisin
    bilgilendirirsen sevinirim
    saygılar

    YanıtlaSil
    Yanıtlar
    1. Merhaba kodu denedim calisiyor gibi, ekte gonderiyorum

      https://github.com/muhammedtanriverdi/php-mailer

      Sil
  3. Hocam php kod yazıyormusunuz ? benim agario sitem var gold sistemi ve klan sistemi oluşturmak istiyorum

    YanıtlaSil
    Yanıtlar
    1. Merhaba Health,

      Bu aralar Php ile proje geliştirmiyorum. Başka projeler üzeriden çalışıyorum. Bu projelerden geriye pek vaktim kalmıyor malesef :(

      Sil

Bu Blogda Ara

İletişim

Ad

E-posta *

Mesaj *