Antalya Tasarım Grubu - Web Sitesi Tasarım    ATG - Genel Bilgi Sayfaları Geri Ileri
CGI hakkında ön bilgi
CGI nedir, ne işe yarar?
Kişisel web server kurulumu
Programların çalışabilmesi için gerekli kodlar
Ekrana yazdırma ve ilk program
Perl diline giriþ
Değişkenler
Splice ve split fonksiyonlarý
Formları kullanma
Çevre değişkenleri
Döngüler
Mantıksal sınama
Matematiksel işlemler
Dosya işlemleri
Alt programlar
Bulma ve değiştirme
Web üzerinden mail gönderme
Perl ile dizin işlemleri
Cookie'ler
Modüller, modül kullanımı ve require
Yazılma sonrası işlemleri
Güvenlik
Upload
Lisans konularý
Programların lisansı ve copyrigth haklarý
Linkler
Perl ile ilgili Türkce ve yabancı linkler
Bu döküman hakkında
Bu döküman hakkında
Antalya Tasarım Grubu - Web Tasarim Hizmetleri - Hosting (Barindirma) Islemleri - Alan Adi Islemlerii

Perl ile web üzerinden mail gönderme :

Perl ile linux server'larda (genelde CGI/Perl destekleyen server'lar linux işletim sistemi kullanır) sendmail programı kullanılarak direk web üzerinden, herhangi ek program kullanmadan ziyarecti tarafından mail gönderilmesini ya da programın kendi kendinin bir şart oluştuğunda size ya da programın gidişatına bağlı olarak başka bir kimseye mail gönderilmesini sağlayabilirsiniz.

Sendmail :

Sendmail programı Linux server'larda web üzerinden mail gönderilebilmesine olanak veren bir programdır. Bu program aracılığıyla yazdığımız CGI programları ile web üzerinden mail gönderebilmemiz için sendmail'in linux server'ına göre tam yolunu bilmemiz gereklidir. Bu yol genellikle şu şekillerdedir :

/usr/sbin/sendmail
/usr/bin/sendmail

Eğer server'daki sendmail yolunu bilmiyorsanız sunucu anasayfasında sunucu ile ilgili sıkca sorulan sorular bölümünde (FAQ) bulabilirsiniz ya da server adminlerine yazıp öğrenebilirsiniz. Windows altında sendmail programı bulunmadığı için az sonra yapacağımız yöntemle windows altında mail gönderemezsiniz.*


Mail göndermek için önce mail programını open (MAIL, "|/usr/sbin/sendmail"); şeklinde mail programını açarsınız, daha sonra aynen mail gönderiyormuş gibi şu bölümlere gerekli yazıları ya da değişkenleri yazarsınız:

print MAIL "From: kimden\@mail.com";

Bu bölüme mailin kimden gönderildiğini yazmanız gerekiyor.

print MAIL "To\:kime\@mail.com\n";

Buraya mailin hangi adrese gitmesini istiyorsanız onu yazmalısınız.

print MAIL "Subject\: Mesajın konusu\n\n";

Bu bölüme de mailin "Subject/Konu" bölümünde yazmasını istediğiniz şeyi girmelisiniz.

print MAIL "Bu mail web üzerinden otomatik olarak gönderilmiştir vs. vs. vs...\n\n";

Bu bölüme mail içeriğini yazmalısınız.

close (MAIL);

Son olarak da mail programını aynen dosya işlemleri gibi kapatıyoruz.


Dikkat etmemiz gereken en önemli nokta sendmail yolu. Eğer bu yol yanlış ya da eksik yazılırsa mail gitmez. Mail gönderirken değişkenleri kullanabilirsiniz ama eğer bir tekil değişkene e-mail atamanız gerekiyorsa "@" işaretinin önüne ters slash (\) koymanız gerekir. Aksi taktirde mail programı değişkeni yanlış algılar ve mail istenildiği şekilde gönderilemez.

Buraya kadar anlamamış olabilirsiniz, bir örnek yaparsak ne kadar kolay olduğunu anlayacaksınız. Örneğimizde web sitemiz üzerinden bize mail gönderilmesini olanak sağlayan bir form-mail programı yapalım. Ziyaretci kendi mail adresini ve mesaj konusunu girsin, mesajını girsin ve formu göndersin, gönderilen bilgiler de bizim mail adresimize ulaştırılsın. Tabii bizim mail adresini de program içerisinde bir tekil değişken olarak tanımlamamız gerekiyor :

#!/usr/bin/perl

# mail.cgi

print "Content-type:text/html\n\n";

$adresim = "isminiz\@mailiniz.com";      
$sendmail = "/usr/sbin/sendmail";       

use CGI qw(:standard);       

$query = new CGI;

$gonderen     = $query -> param('gonderen');
$konu         = $query -> param('konu');
$mesaj        = $query -> param('mesaj');
$istem        = $query -> param('istem');

if ($istem eq "gonder") {

    if ($gonderen eq "" or $konu eq "" or $mesaj eq "") {

        print "Mail adresiniz, mail konusu ya da mesaj bölümü boş bırakılmış.
               Bu bölümleri doldurmanız zorunludur. Lütfen geri dönüp tekrar deneyin...";
      
               exit;

        }


           open (MAIL, "|$sendmail");
           print MAIL "From\: $gonderen\n";
           print MAIL "To\:$adresim\n";
           print MAIL "Subject\: $konu\n\n";
           print MAIL "Siteniz iletişim sayfasından gönderildi:\n\n";
           print MAIL "$mesaj\n\n";
           print MAIL "\n";
           close (MAIL);

print "Mesajınız başarıyla gönderildi, en kısa zamanda cevap verilecek. Teşekkür ederim...";

exit;

}

print "<form action=mail.cgi method=post>";
print "<input type=hidden name=istem value=gonder>";
print "<b>Bize ulaşmak için aşağıdaki formu doldurun :</b><br><br>";
print "<table width=500 cellpadding=0 cellspacing=0 border=0>";
print "<tr>";
print "<td width=50\%>";
print "Mail adresiniz : ";
print "</td>";
print "<td width=50\%>";
print "<input type=text name=gonderen>";
print "</td>";
print "</tr>";
print "<tr>";
print "<td>";
print "Konu :";
print "</td>";
print "<td>";
print "<input type=text name=konu>";
print "</td>";
print "</tr>";
print "<tr>";
print "<td>";
print "Mesajınız :";
print "</td>";
print "<td>";
print "<textarea name=mesaj></textarea>";
print "</td>";
print "</tr>";
print "<tr>";
print "<td>\ \;</td>";
print "<td>";
print "<input type=submit value=Gönder!>";
print "</td>";
print "</tr>";
print "</table>";
print "</form>";




Programın içinde geçen "istem" değişkeni program akışını ayarlamak için atanmıştır. Eğer bu değişkenin içi boşsa en sondaki mail formu ekrana yazdırılır, yok eğer içeriği "gonder" ise yani form doldurulup gönderilmişse $gonderen, $konu ve $mesaj değişkenleri sorgulanır, içerikleri boşsa hata verilip program sonlandırılır (exit;) değilse mail gönderilir ve ekrana karşılama mesajı bastırılır. Bu programı kişisel server'ınızda denerseniz sadece karşılama sayfalarını ve programın içinde hata olup olmadığını görebilirsiniz ancak mail gönderemezsiniz.
p