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.

Mysql Nedir?

Mysql, ilk sürümü 1995 yılında yayınlanmış, sql tabanlı bir veri tabanı yönetim sistemidir. Şu an en güncel sürümü 5.6.12 (2013) olan Mysql; başlangıçta bir vakıf tarafından geliştirilse de, Ocak 2008’de Oracle tarafından satın alındı.

Açık kaynaklı olması ve ticari kullanımlar dışında ücretsiz olması nedeniyle; başta Php olmak üzere, bir çok platformda geliştiriciler tarafından kullanmakta. Satışı sonrası ücretli olması çekincesiyle PostgreSql’e yönelim başladı ancak bu sayı henüz ciddi seviyelerde değil. Satış öncesi gelişimine yardımcı olan bir çok yazılımcı, bugün aynı desteği PostgreSql için vermektedir.

Mysql en iyi performansını Linux üzerinde verse de, Windows ve Unix sistemler üzerinde de çalışabilmekte. Daha çok Php ile özdeşleşse de, diğer sunucu taraflı diller tarafından da kullanılabilmekte / kullanılmaktadır.

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.

Script Dili Ne Demektir?

Script denildiğinde bir çok insanın aklına; başkaların tarafından hazırlanmış ve kullanıma hazır kod blogları gelir. Ancak Script dil bundan uzak bir kavram. Script dili, kullandığımız php ve javascript gibi dilleri, programlama dillerinde ayıran ince bir çizgidir. Script dilleri ile programlama dilleri arasında çok keskin ve net bir çizgi vardır.

Bir programlama dilinde, o dile özgü açılış ve kapanış tagları bulunmamaktadır. Açılan dosya tamamen o dile özgün bir dosyadır. Ancak Script dilinde bu tersinedir. Siz bir php dosyası yaratarak, bu dosyanın içerisine php kodlarının yanı sıra, html ve javascript kodları da yerleştirebilir ve bu kodları php yardımıyla üretebilirsiniz. Yani siz php kodlarını, html ve javascript kodlarının arasına, açılış ve kapanış tagları yardımıyla serpiştirebilirsiniz. Aynı şekilde javascript kodlarını da html kodlarının arasına serpiştirebilirsiniz. Çünkü javascript de bir script dilidir. Php üzerinden bir örnek vermek gerekirse.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo 'Site Başlığı'; ?></title>
</head>

<body>
<?php echo 'Site İçeriği'; ?>
</body>
</html>

Şeklinde; php kod bloglarını aralara serpiştirerek bir dinamik sayfa oluşturabilirsiniz. Bu kod blogu sunucu tarafında bir php sayfayı olarak işlem görse de, tarayıcı/kullanıcı tarafında aslında bir html sayfasıdır. Yani kullanıcı tarafına bu kod blogu aşağıdaki gibi gelir ve işlem görür.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Site Başlığı</title>
</head>

<body>
Site İçeriği
</body>
</html>

Toparlamak gerekirse; script dilleri, basit bir şekilde, bize başka kodlamalar üzerine dinamik yapılar oluşturmamızı sağlar. Web uygulamalar üzerinden örnek vermek gerekirse. Php yardımıyla, javascript ve html kodlarının arasına php kodları yazarak kodlar oluşturabilir ve yine aynı şekilde, javascript yardımıyla da html kodlarına müdahale edebiliriz. Programlama dilleri aracılığıyla ise; bu kodları harici bir dosyada oluşturarak, bu dosyaya istek yaparak çalıştırmak istediğimiz kod blogunu işleme alabiliriz.