Sakin Adam

Web Yazılım Günlüğü

Php ile Mail Gönderme

Kullanıcı onaylamak, bülten göndermek gibi durumlarda php ile mail göndermeye ihtiyaç duyuyoruz. Basit olarak php’nin mail fonsiyonuyla bu işlemi gerçekleştirebiliz ancak; spama düşme, eksik gönderim gibi durumlardan dolayı kütüphane kullanmak en mantıklısı. Php için bir çok mail kütüphanesi yazılmış ancak en basiti ve kullanışlısı kuşkusuz PhpMailer. Önce kütüphanenin nasıl indirileceğini anlatayım sonra nasıl kullanılacağını anlatalım. Kütüphaneyi indirmek için bu adrese gidin ve sağ kısımda bulunan “Download ZIP” butonuna tıklayın. Benim anlatacağım kısım için, ana dizindeki üç dosyayı kullanıcaz(class.phpmailer.php,class.pop3.php,class.smtp.php).

PhpMailer ile iki farklı şekilde Mail Gönderme mümkün. İlki smtp kullanarak mail göndermek. Bu yöntemde; mail adresinizin kullanıcı adı ve şifresi ile giriş yapılır ve mailiniz bu şekilde gönderilir. Kullandığınız sunucu dışındaki bir yerden mail gönderecekseniz bu yolu kullanmak mantıklı. Örneğin gmail. Ancak aynı sunucu üzerindeki bir mail adresini kullanacaksanız pop3 yöntemini kullanmanızı daha iyi olur. Aynı sunucu üzerinde ise hem aralarında fark yoktur hem de smtp ile göndermek biraz daha sunucuyu yorabilir.

Php Smtp ile Mail Gönderme Örneği (include edilen dosyalar ile aynı dizindedir):

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>PHPMailer - SMTP test</title>
</head>
<body>
<?php

//Zaman dilimi
date_default_timezone_set('Etc/UTC');

require_once 'PHPMailerAutoload.php';

//Create a new PHPMailer instance
$mail = new PHPMailer();
//turkce karakterler icin
$mail->CharSet='utf-8';
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Hataların Gösterilmesi kapalı için false, kullanıcı hataları için 1, hem kullanıcı hem de sunucu hataları için 2
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
//mail sunucusunun adresi
$mail->Host = "mail.example.com";
//mail sunucusunun portu
$mail->Port = 25;
//yukarıdaki iki bilgiyi bulamazsanız, ilgili mail adresini thunderbird gibi bir mail istemcisine kurun ve bağlantı bilgilerine bakın.
$mail->SMTPAuth = true;
//kullanıcı adı
$mail->Username = "yourname@example.com";
//şifre
$mail->Password = "yourpassword";
//mail kimden geliyor gibi görünecek.
$mail->setFrom('from@example.com', 'First Last');
//cevapla butonuna bastığında kimin mail adresine gönderilecek.
$mail->addReplyTo('replyto@example.com', 'First Last');
//mail gönderilecek adres
$mail->addAddress('whoto@example.com', 'John Doe');
//mail konusu
$mail->Subject = 'PHPMailer SMTP test';
//mail gövdesi. bu örnekte harici bir html dosyasından alınıyor ancak düz yazı da yazabilirsiniz.
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
//bu kısım önemli. mail yüklenirken vb. durumlarda bu yazı görünüyor.
$mail->AltBody = 'This is a plain-text message body';
//dosya eklemek isterseniz bu şekilde ekliyorsunuz.
$mail->addAttachment('images/phpmailer_mini.gif');

//mail gönderme işlemi.
if (!$mail->send()) {
    echo "mail gönderilemedi: " . $mail->ErrorInfo;
} else {
    echo "mail başarıyla gönderildi.";
}
?>
</body>
</html>

Php Pop3 ile Mail Gönderme Örneği (include edilen dosyalar ile aynı dizindedir):

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>PHPMailer - mail() test</title>
</head>
<body>
<?php
require_once 'PHPMailerAutoload.php';

$mail = new PHPMailer();
//turkce karakterler icin
$mail->CharSet='utf-8';
//mail kimden geliyor gibi görünecek.
$mail->setFrom('from@example.com', 'First Last');
//cevapla butonuna bastığında kimin mail adresine gönderilecek.
$mail->addReplyTo('replyto@example.com', 'First Last');
//mail gönderilecek adres
$mail->addAddress('whoto@example.com', 'John Doe');
//mail konusu
$mail->Subject = 'PHPMailer mail() test';
//mail gövdesi. bu örnekte harici bir html dosyasından alınıyor ancak düz yazı da yazabilirsiniz.
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
//bu kısım önemli. mail yüklenirken vb. durumlarda bu yazı görünüyor.
$mail->AltBody = 'This is a plain-text message body';
//dosya eklemek isterseniz bu şekilde ekliyorsunuz.
$mail->addAttachment('images/phpmailer_mini.gif');

//send the message, check for errors
if (!$mail->send()) {
    echo "mail gönderilemedi: " . $mail->ErrorInfo;
} else {
    echo "mail başarıyla gönderildi.";
}
?>
</body>
</html>

Bu iki örnekten birisini seçerek Php ile Mail Gönderebilirsiniz. Toplu mail gönderecek olanlara kıs bir uyarı yapayım. Mailleri seri bir şekilde arka arkaya gönderirseniz spam’a düşme ihtimali artar, gmail kullansanız bile. O nedenle aralıklarla yavaş yavaş göndermenizi öneririm.

5 Responses to Php ile Mail Gönderme

  1. dosyalar güncellenmiş galiba çok teşekkürler çok yardımcı oldu 😉

    bu arada winrar yapıyomusunuz siz ? 🙂

  2. Güzel bir döküman olmuş, teşekkürler.
    Birde rapor almayı nasıl yapabiliriz acaba _??

    • daha önce rapor almaya ihtiyaç duymamıştım ancak müsait bir zamanımda nasıl yapıldığıyla ilgili bir makale yazmaya çalışacağım. ilginiz için teşekkürler.

  3. merhaba form çok kullanışlı ancak merak ettiğim bir şey var. burada formu ben alıyorum ve bu bilgiler bana mail ile geliyor.peki aynı formda, formu dolduran kişiye ayrı bir konu ve içerik ile (kayıt bilgisi, kayıt işleminiz tamamlanmıştır gibi) 2. bir mail nasıl tetiklerim?

    • söylediğiniz mail için ikinci bir mail gönderme sayfa hazırladıktan sonra aşağıdaki kodu ilk sayfanın sonuna eklediğinizde söylediğiniz işlemi yapabilirsiniz. Tabi ilk mail gönderme sayfasının en başına < ?php ob_start(); ?> fonksiyonunu koymayı unutmayın.

      <?php
      header("location:ikinciMail.php?mail_adres=whoto@example.com");
      ?>
      

      ilginiz için teşekkürler.

Bir Cevap Yazın

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

Time limit is exhausted. Please reload CAPTCHA.