Barış AKDEMİR

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.

Php Nedir?

Php sunucu taraflı çalışan bir script dilidir. Açılımı Personal Home Page (Kişisel Ana Sayfa)-dır. Rasmus Lerdorf tarafından yaratılmış; Andi Gutmans ve Zeev Suraski tarafından gelişimine büyük katkı sağlanmıştır.Dünya üzerinde en çok kullanılan web programlama dillerinden birisidir.

Üye giriş işlemleri, veri tabanı işlemleri gibi bir çok işlem php yardımıyla yapılmaktadır. Php ile yapabilecekleriniz hayal gücünüzle sınırlı demek yanlış olmaz. Özellikle php’nin artısı olan linux kodlarının da kullanılabilmesi yardımıyla yapılabilecekler gerçekten hayal gücünün sınırlarını zorlamata. Ancak bu noktada şunu söylemek gerekiyor. Kiralanana bir çok paylaşımlı hostinglerde güvenlik gerekcesiyle bir çok fonksiyonun kullanımı kapatılmış olabilir.

Php’yi kullanabilmek için hosting hizmeti alabileceğimiz gibi kendi bilgisayarımıza localhost kurarak da kullanabiliriz. Windows için yaygın olarak wamp server kullanılmakta. Basit ve klasik bir php kodunu görelim ve php ile ilgili biraz daha bilgi verelim.

<?php
echo 'Merhaba Dünya';
?>

Bu kısa kod tüm programlama dillerinde klasik haline gelmiş ve bir dili öğrenirken ilk olarak kullanılan ‘Merhaba Dünya’. Kodu çalıştırdığınızda ekrana Merhaba Dünya yazısının geldiğini göreceksiniz. Kodlama hakkında detaya girmek istemiyorum. İlerleyen zamanlarda Php Dersleri yazmayı düşünüyorum. O kısımda daha detaylı inceleleriz.

Php bir script dili olduğu için, html ve javascript kodlarının içerisine yazmak mümkün. Biraz daha açıklamak gerekirse; php yardımıyla html ve javascript kodlarını çıktı yapmak/üretmek mümkün. Bu da script dilinin en büyük nimeti.

Php öğrenmek isteyenlere bir kaç tavsiye vermek gerekirse; en azından öğrenme sürecinde hazır kodları kullanmamak gerek ve öğrenmeye çalıştığımız yerde gördüğümüz kodları kopyala yapıştır yapmak yerine yazma yolunu seçmeli, az bilsek de bir örnek proje hazırlayarak hayata geçirmek daha doğru olacaktır. Bu süreçteki en önemli nokta ise zorlu bir kısımla karşılaştığımızda ‘burası da böyle olsun’ dememek gerek. Ne kadar çok uğraşırsanız o kadar çok öğreneceksinizdir. Herhangi bir programlama dilini bilmiyorsanız php öğrenmek bir günde olacak şey değildir. Zaten tamamen bilmek çok zor. Php’nin sayısız kütüphanesi ve bir çok framework-ü bulunmakta. Herşeyde olduğu gibi burada da emek vermek gerekiyor.