eğlence 10 Mart 2010 Çarşamba 18:31    
Açılış Sayfan Yap Sık Kullanılanlara Ekle   Yardım
    Bu Sitede Neler Var   
  Sohbet
  Videolar
  Grup Resimler
  Fıkralar
  Şarkı Sözleri
  Flash Animasyonlar
  Flash Oyunlar
  Magazin Haberleri
  Faydalı Bilgiler
  Programlar
  Anne Sayfa
Anket
Ordu`nun dereleri yukarı akarsa ne olur?

Hiçbişey olmaz
Newton Göt Olur
Sular kesilir
Dere yukarı akarmı lan
Aşk herşeyin üstündedir
Bok ettiniz türküyü
Yorum Yok
Böyle anketmi olur lan
Olur mın akoyim nolcek


[Sonuçları Görelim]

Link Değişimi
Cinsellik
Sizin Siteniz
Ana Sayfa » Her Türlü Bilgi » Bilgisayar » PHP ve Email - Bolum 1
Son Eklenenler Çok İzlenenler Çok Yorumlananlar
PHP Ve Email - Bolum 1

Gectigimiz bir kac yil icerisinde email ile iletisim tum dunyanin gozde iletisim araci
haline gelmistir.Bu iletisim araci bazi buyuk sirketler icin bile su anda standart ve
yaygin olarak is dunyasi icinde kullanilmaktadir..
Durum boyle iken sizinde bir web programcisi olarak programlarinizda bu gozde
iletisim aracinin tum olanaklarini kullanmaniz beklenmektedir.Bu yazi icerisinde
sizlere PHP`nin email ile ilgili islemlerde nasil kullanilabilecegini anlatacagiz.

PHP icinde Email gonderilmesi

Iste bu konu ile ilgili sizlere cok sevineceginiz bazi haberlerimiz var.PHP icerisinde
mail gondermek icin yanlizca bir tek fonksiyonu kullanmaniz yeterli.Bu
fonksiyo`nun adi mail ().Evet sadece bu fonksiyon ile tum email islemlerinizi bir
adimda agrisiz sizisiz bir sekilde gerceklestirebilirsiniz.

mail () fonksiyonu`nun kullanilmasi

Bu fonksiyon sadece uc argument almaktadir:(Dorduncu argument
opsiyoneldir.Genel olarak bir mailin gonderilmesi icin yeterli kriterler asagidaki
gibidir.)

Mail`in gonderilecegi adres (Alicinin adresi)
Mail`in konusu
Mail govdesi (Tum email metni ve ekler)
Not: Burada bahsedilen mail konusu ve mail govdesi argumentleri bos olarak
birakilabilir.Normal olarak gunluk hayatimiz kullandigimiz sekilde mail govdesi
bosve konusu olmayan maillerde PHP icinden gonderilebilir.

Dorduncu argument olarak ek mail basliklari da tanimlanabilir.(Mail Headers)...Bu
konuya daha sonra deginecegiz.

mail () fonksiyonun duzgun calismasi icin php.ini dosyasinda bazi ayarlamalari
yapmaniz gerekmektedir.Bu ayar PHP ye local mail server sisteminizin ne
oldugunu soylemekten ibarettir.Bu noktadan sonra mail fonksiyonu burada yer
alan ayari kullanarak programlariniz icinden gondereceginiz email`leri yerel email
omurgasina iletecektir.

php.ini dosyasi icerisinde asagidaki satirlarin benzerlerini goreceksiniz ;
[mail function] SMTP = localhost ; for win32 only sendmail_from =
me@localhost.com ; for win32 only ;sendmail-path = ;for unix only,may supply
arguments as well
Email`leriniz icin uzakta bir SMTP server kullaniyorsaniz (bunu yanlizca PHP yi
Windows uzerinde kulaniyorsaniz yapabilirsiniz) Bu server sizin mailllerinizi almak
icin ayarlanmis olmalidir.Gunumuzde cogu mail server bu sekilde gelen mailleri
spam mail gonderenlere firsat vermemek icin kabul etmemektedir.(Mail Relaying)

Burada anlatilmak istenen konu kisaca, kiraladiginiz Internet Servis Saglayici
(ISS) hesabiniz,onlarin SMTP serverini da bu tip amaclar icin kullanacaksiniz
anlamina gelmemektedir.Bu konudaki en iyi kaynaga kendi ISS`nizin
dokumanlarindan ulasabilirsiniz.Sonucta PHP`yi bir Windows makinede
calistiriyorsaniz size bu mailleri gondermke icin bir SMTP server hesabi olmasi
gerekliligidir.

Windows NT isletim sistemi uzerinde IIS (Internet Information Services) web
server kullaniyorsaniz,zaten ongorulen olarak kurulmus "localhost" mail server
isinizi pekela gorecektir.

Unix isletim sistemleri uzerinde ongorulen olarak kurulan sendmail programi ile
PHP fevkalade uyum icinde caliscaktir.Sendmail hemen hemen butun Unix(TM)
ve turev sistemleri uzerinde (Bunlara ucretsiz dagitilan Linux ve BSD`de dahildir)
berbaer olarak gelir.Kurulum sirasinda siz ozel olarak mudahele etmediysseniz
otomatik olarak kurulur.

Sendmail dunyanin gelmis gecmis en komplike programlarindan birisidir.Kendi
icinde bazi makro dilleride icermektedir.Yaptigi is cok basittir:

"Gonderilcek email`leri,alicilarin uzerinde yer aldigi mail server makinelerine
gondermektir."

Buraya kadar yerel mail programlarini ve SMTP serverlari gordukten sonra mail ()
fonksyionunun bu tabloda aldigi rolu inceleyelim.Bu fonksiyon aslinda verilen
komutlarla hazirlanan emaili yerel email programlari (Sendmail gibi) veya uzaktaki
SMTP sunuculara gecirmekle yukumludur.Eger basarili bir sekilde gecis
saglanmissa fonksiyon basarili true sonucunu dondurur.Bu fonksiyon kesinlikle
mailin yerine ulastigini garanti etmez.Onun sorumlulugu verilen emaili sisteme
gondermektir.Duzgun calisan bir yerel mail server paketiniz olsa bile bu her
zaman maillerinizin gidecegi anlamina gelmemektedir.

Olusacak hata halinde bu fonksiyon ne yazik ki herhangi bir sonuc
dondurmez.(Sanildigi gibi false sonucu bile sisteme geri donmez.Bu fonksyion
eger herhangi bir sekilde calismayi durdurursa browsera herhangi bir geri bilgi
akimi saglanamayacagi icin script calismasi donar.(Freezing)

Simdide bir ornek yapalim ve bir kisisye PHP yi kullanarak hazirlayacagimiz
kodlarla bir email gonderelim.

Birazdan yazacagimiz kod icinde 3 degisik degisken hazirlayarak bunlari mail ()
fonksiyonuna gecirecegiz.
<?php //ilk_email.php
$email_kime = "oktay@turk-php.com";

$email_konusu = "Bir saldiri girisimi yapildi!";

$email_govdesi = "Bugun sitemizdeki bir acik kullanilarak saldiri girisimi
yapildi. "; $email_govdesi .= "Acik kapatildi su anda hersey yolunda. ";
$email_govdesi .= "Bir formdan aldigimiz verilerin sayfa devamli refresh
edilerek "; $email_govdesi .= "tekrarlanmasi sonucu ayni verileri sistem bir
dakika icinde "; $email_govdesi .= "tam olarak 60 kez almistir. ";
$email_govdesi .= "Bilgilerinize. ";

if (mail ($email_kime, $email_konusu, $email_govdesi)) echo "$email_konusu
konulu email basarili bir sekilde $email_kime isimli kullaniciya ulastirildi."; else
echo "$email_konusu konulu email gonderilemedi."; ?>
Bu sekilde programlama yapmak (dorduncu argument olan header`lari isin icine
sokmadan) belkide en az bas agritan ve en kolay email gonderme bicimidir.Cogu
zaman bundan fazlasina gereksinimde yoktur zaten.(Bu konu gelsimis email
gonderilmesi bolumunde en ince ayrintisina kadar incelenecektir.Simdilik basitten
karmasiga dogru bir ilerleme ile size bir memail gonderilmesi islemi
anlatilmaktadir.)

Programlarinizda yogun olarak email islemlerini e-ticaret islemlerinde
kullanacaksiniz.Bu sekilde musteri ile temas kurmak dunyanin en ucuz iletisim
bicimidir.Bir siparisin takibi icin bilgilendirme yolu olarak email kullanilmasi dunya
uzerinde yaygin bir uygulamadir.

Her zaman bir tek kisiye mail gonderilmesi zorunlu degildir.Bir dongu icinde
kullanildiginda bir text dosyasi icindeki tum alicilara, mail () fonksiyonu ile mail
gondermekte mumkundur.

Burada bir konuyu yeri gelmisken hatirlatali.Turkiyede olmasa bile dunyanin
cesitli ulkelerinde "istenmeyen email" (spam) gonderilmesi yasa ile kanun disi ilan
edilmistir.Bu sucun cezasi Amerika Birlesik Devletlerinde kisi basina 600
dolardir.Bir suc icin bu ulkede ne kadar agir ceza verildigini,en son aldigim
arabamin degerinin 800 dolar oldugunu soylersem daha iyi dusunebilirsiniz.

Ben bana gelen her spam mail icin kendi servis saglayicima durumu
bildirmekteyim.Bu durumda gerekli yasal islemler yapilmaktadir.

Turkiye`deki servis saglayicilar icin durum icler acisidir.Gordugum kadariyla
bazilari binlerce email iceren CD`leri korkusuca piyasaya surmektedir.Ulke
insanlari icin yazik bir durum ve utanc verici tablolar ortaya cikmaktadir.Burada
(ABD) email adresi evinizin adresinden farksizdir.Bilgi toplumu olmak diye iste
buna denilmektedir...Ulkenin gelecegini dusunen herkese iletilir.

Herneyse bu kadar aciklama yeter simdi bir ornek yaparak devam
edelim.Sonucta bizim gorevimiz programlama yapmak gerisini yapmasi
gerekenlere birakalim.

Siimdi elimizde bir text dosyasi var ve icindeki alicilar listesinde her kisinin email
adresi yeni bir satirda yer almaktadir.PHP`nin mail () fonksiyonu her aliciyi ","
virgul ile (noktali virgul degil lutfen dikkat) ayirarak tanimlanmasina izin
vermketedir.Bu durumda algoritmamizi yazacak olursak :

<?php //birden_fazla_kisiye_email.php

$email_dosyamiz = "./alicilar_listesi.txt"; $email_adresleri =
file($email_dosyamiz);

for (i=0; $i < count($email_adresleri); $i++) $email_adresleri[$i] =
trim($email_adresleri[$i]);

$alicilar = implode(",", $email_adresleri);

$email_konusu = "Merhaba!"; $email_govdesi = "Bugun toplanti 4:30 da. Lutfen
zamaninda gel. "; $email_govdesi .= "Serkan Hadi Ceylani ";

mail ($alicilar, $email_konusu, $email_govdesi); echo "$email_konusu konulu
eposta $alicilar adresine basarili bir sekilde gonderildi."; ?>

Yukaridaki ornekte komutlarimizi aciklamak istersek,

file () komutu ile bir dosyanin icerigini her satira yeni dizi elemani gelecek sekilde
ayirmis oluyoruz.(Dosya icerigini bir dizinin elemanlarina yukluyoruz.)

trim () komutu ile bosluklari (bunlara yeni satirlarda dahil) diziden silip atiyoruz.

implode komutu ile bu dizinin butun elemanlarini $email_adresleri
dizisine,aralarina "," virgul koyarak katiyoruz.

Dongu,text dosyasi icindeki butun email adresleri bitene kadar devam ediyor.

Bir Emai`in Anatomisi(Bir Email nedir?,Hangi elemanlardan olusur?,Hangi
prensiplere gore gonderilir?)

Simdi bazi seyleri kesfetmenin zamani geldi.Bu yazi dizisi icerisinde sizlere bu
konuda en ince detaya kadar bilgi vermek yoluna gidecegim.Bunun sebebi
durumun anlasilmasinda yeterli kaynak olmayisindan dolayi bu belgenin turkce
dilinde hazirlanip ulkemize kazandirilmasidir.Bazen bildiginiz seyler
hakkinda,bazende size cok yabanci konularda bilgi sahibi olacaksiniz.

Bir email mesaji duz text dosyasindan baska bir sey degildir.Bu mesajin icinde
bazi ,header tabir edilen basliklar ve mesaj govdesi yer almaktadir.(Kaynak:RFC
822 )

http://rfc.net/rfc822.html

Ornek bir email mesaji asagidaki gibidir:

***********************************************************
********

Return-path: <nobody@artemis.jtlnet.com> Envelope-to: serkan@turk-php.com
Delivery-date: Fri, 18 May 2001 16:25:30 -0400 Received: from nobody by
artemis.jtlnet.com with local (Exim 3.20 #1) id 150qoU-0008VR-00; Fri, 18 May
2001 16:25:30 -0400 To: Serkan <serkan@turk-php.com>,Tayfun
<tayfun@turk-php.com> Subject: ADMIN BASVURUSU From: turk-php.com
<serkan@turk-php.com> X-Sender: <mail.turk-php.com> X-Mailer: Admin 1.0
by serkan@turk-php.com X-Priority: 1 Message-Id:
<E150qoU-0008VR-00@artemis.jtlnet.com> Sender: Nobody
<nobody@artemis.jtlnet.com> Date: Fri, 18 May 2001 16:25:30 -0400

Adi:Deneme Soyadi:Deneme yapiliyor Mail Adresi:Test Ulkesi:Test Yabanci
Dilleri:Test IP:172.149.117.88
http://www.turk-php.com/pages.php?page=Bizekatilin Tarih:18 05 2001 20 30
-----------

Admin Basvurusu Hazirlayan:Serkan Hadi Ceylani Lutfen bu kisi ile temasa
gecerek,sizde olusan fikirleri admin@turk-php.com listesine gonderiniz.
***********************************************************
*********
Simdi de bazi temel kavramlari aciklayalim.Bu email mesajinda yukarida goruldugu
gibi basliklar(header) mesaj govdesinden ayri olarak yer almaktadir.Bu bir
zorunluluktir ve carriage return/line feed (CR/LF) (Tam Turkcesi satir besleme`dir
) ciftleri ile bu durum saglanmaktadir.Bunula beraber mesajin icinde yeni satirlar
olusturmak icin UNIX sistemlerinde ,Windows sistemlerinde cifti
kullanilmaktadir.

Yukaridaki ornekte yer alan "header"(baslik kisimi)da goruldugu uzere bazi alanlar
tanimlanmis ve bir bosluk birakilarak karsiliklari yazilmistir.Burada mail programi
icin bazi tanimlamalar yapilmistir.

Bir email`de genel olarak asagidaki alanlarin oldugu gorulur:

To : Virgul ile ayrilan alicilar listesi.

From : Gonderen kisinin email adresi.

Reply-to: Mail icin cevaplarin gidecegi adres.

Cc : Karbon kopya.Virgul ile ayrilmis olan email adresleri icin ek alicilar listesi.

Subject : Mesajin Konusu.
Extra "header" (basliklar) mail () fonksiyonuna eklenecek dorduncu argument ile
yerel mail sitemine gecirilebilir.Bir ornek vermke istersek From ve Reply-to
"header"lari icin kendiniz degerler belirlemek ve bunun mailde header olarak
tanimlanmasini istiyorsunuz:

mail ("birileri@a.com", "Merhaba", "Bu bir email mesajidir.","From:
digerleri@b.com Reply-to: digerleri2.bcom");

Not:Mutlaka satir beslemesi saglanmalidir.burada goruldugu uzere ile bu
saglanmistir.Headerlardan sonra mutlaka bir bosluk birakilmalidir.Ornek: From:
bosluk birakildi. Gordugunuz gibi iki nokta ile bosluk kelimesini yazmadan once bir
bosluk biraktim.

Cc ve Bcc headerlarini da ayni sekilde ekleyebilirdik.

mail ("birileri@a.com", "Merhaba", "Bu bir email mesajidir.","From:
digerleri@b.com Reply-to: digerleri2.bcom Cc: serkan@turk-
php.com Bcc: admin@turk-php.com");

Bu durumda 3 adet mail kopyasi yaratilacaktir.Bunlara goz atmak istersek:

birileri@a.com isimli mail adresinin sahibi serkan@turk-php.com adresine de bir
kopyanin gittigini gorebilecektir.
serkan@turk-php.com mail adresinin sahibi birileri@a.com isimli kullaniciya orjinal
mesajin gittigini gorebilecektir.
admin@turk-php.com isimli mail adresinin sahibi yukarida sozu gecen her iki
kullaniciyada mesajin gittigini gorebilecektir.
Not:Yukaridaki iki kullanicida (birileri@a.com ve serkan@turk-php.com )
admin@turk-php.com`unda ayni maili aldigini kesinlikle bilmeyecektir.
Ekleme: 12.12.2007 Okuma: 742  
Kategori: Bilgisayar Yorum: 0
Tags: PHP ve Email - Bolum 1 Bilgisayar
İsminiz
E-Mailiniz
Yorumunuz
SEÇMECE BİLGİLER
  Webcamda GÖrÜntÜnÜzÜn ÜstÜn
  E-posta adresinin dogrulugu
  Genius ’ tan 2 + 1 Hoparlör
  Network Nedir Nasıl Kurulur
  Msn Ye Komik Avatarlar Ken
  Evinizde ADSL Üzerinden Web
  Linux ve Unix Savaşı
  php designer
  Sürüklemeyi (Drag) azaltma
  XP Köleniz Olsun
KATEGORİLER
  Aşk ve Sevgi
  Bilgisayar
  Cep Telefonları
  Cinsellik
  Çiçek ve Bitkiler
  Erkeklere Özel
  Hayvanlar
  İnternetin İçinden
  Kadınlara Özel
  Komik ve Eğlence
  Sağlık
Bize Ulaşın | Ana Sayfa