Php Aracılığı ile Mail Gönderme


Düzenleme : Bu çalışmadaki php dosyası zaman zaman sorun çıkartmaktadır.Bu nedenle flash8 başlığı altındaki 2 örneği incelemenizi öneririm.Sorunun ne olduğunu henüz çözemedim.


Bu çalışmamızın mail gönderme dışında diğer bir özelliği size mesaj gönderen kişiye otomatik yanıt iletmesidir.

Flash aracılığı ile mail göndermek için mutlaka php deneyiminizin olması gerekmez.Webde bu konu ile ilgili birçok php mail dosyası bulmanız mümkündür.Actionscript biliyorsanız bir php dosyasında hangi alanları düzenleyeceğinizi kolaylıkla anlarsınız.Bu tür entegre çalışmalardaki esas flash içinde kullanılan input ve dinamik metin kutularının değişken adlarını, php dosyasında kullanarakı işleyip yorumlamaktır.

Önce alttaki mail dosyasını inceleyin.Şayet isim, mail ve mesaj kısımlarının bir veya birkaçını boş bırakır veya hatalı mail adı kullanarak mesaj göndermeye kalkarsanız ilgili kutuda gereken hata mesajını göreceksiniz.Deneme amaçlı hatalı mail gönderiniz.

Buradan gönderilen mesajlar kullanmadığım bir mail hesabına yollanacağından elime geçmeyecektir.

Şimdi düzgün olarak ilgili kutuları doldurun ve kullandığınız bir email adresini yazın.Mesajı gönder tuşuna bastıktan sonra mailinizi kontrol edin.Size otomatik bir cevap gönderilecektir.

DOSYAYI İNDİR

PHP dosyası : Önce php dosyasını inceleyelim:

<?

$adminaddress = "lazoid@operamail.com";
$siteaddress ="http://www.flashdersleri.com/";
$sitename = "Flash-MX Dersleri";
$date = date("d/m/Y H:i:s");
if ($REMOTE_ADDR == "") $ip = "no ip";
else $ip = getHostByAddr($REMOTE_ADDR);

if ($action != ""):
mail("$adminaddress","Özel Mesaj",
"$siteaddress sayfasından size bir mail gönderildi\n
isim: $fname
email : $email\n
Mesaj:
------------------------------
$comments

Kullanıcı bilgileri :
------------------------------
$HTTP_USER_AGENT
//Hostname: $ip
//IP adres: $REMOTE_ADDR
Tarih/Zaman: $date","FROM:$adminaddress");

//Kullanıcıya mail gönderiliyor
mail("$email","$sitename sayfası",
"Merhaba,\n
$sitename sayfamı ziyaret ettiğiniz için teşekkürler,mailinize en kısa süre içinde yanıt verilecektir.\n
Saygılarımla,
Lazoid

$siteaddress","FROM:$adminaddress");

//cevap
$sendresult = "Mailiniz gonderilmistir ";

print("answer=".urlencode($sendresult)."&");

endif;

?>

Yukardaki php sayfasında sadece kırmızı ile yazılan yerleri değiştirebilirsiniz. Bunlar size ve maili gönderen kişiye iletilen cümlelerdir. $fname , $email , $comments kısımları flashda metin kutusuna atanan değişkenlerin isimleridir ve bu alana yazılan metni yorumlar.$sendresult = "Mailiniz gonderilmistir "; bu dizin mail gönderilme işlemi tamamlandığında formmailin sağ tarafına eklenen dinamik metin kutusunda görüntüleneceklerdir.Sayfamız flash amaçlı olduğundan php dosyası derinliğine yorumlanmayacaktır.Zaten dikkatle incelediğinizde hangi bölümün neresi için kullanıldığını kolaylıkla anlayabilirsiniz.

Swf dosyasının hazırlanması: Aslında sayfanın hazırlanmasında hiçbir özellik yoktur.Yukardaki swf dosyasını incelediğinizde sahnede 3 input kutu, bunların hemen sağında bir dinamik metin kutusu , altta 2 adet buton mevcuttur.

Burda sorulan sorulardan birisi metin kutularına nasıl girinti ve çıkıntı imajı verildiğidir.Bu çok basit bir işlemdir.Deneme amaçlı flashta yeni bir sayfa açın. Sahneye dinamik veya input bir metin kutusu çizin.Fakat kutunun border alanını boş bırakın. Üste bir layer ekleyin.Araç kutusundan line aracını seçin
ve en ince çizgi ile kutunun sınırları üzerine bir dikdörtgen çizin.Şayet sol ve üst kenardaki çizgiyi siyah sağ ve alttaki çizgiyi beyaz yaparsanız sayfamızdaki gibi bir girinti görüntüsü gözlenir. Sol ve üst çizgiyi beyaz, sağ ve alttaki çizgiyi siyah yaparsanız bu sefer bir kabartma imajı ortaya çıkacaktır. Bu 2 özellik butonlarda da kullanılmıştır.

Çizim işleri tamamlanmışsa şimdi isimlendirme işlemini yapalım.

1- İnput kutulara sırası ile şu instance nameleri atayalım. kutu0, kutu1 ,kutu2

2- Dinamik metin kutusuna şu instance name`i verin: sonuc

3-Gönder butonuna buton0 ve sil butonuna buton1 adını atayın.

Burada sadece 1.kareye komutlar atanmış ve tüm işlemler bu komutla sağlanmaktadır.Komutumuz:

/*Bir değişkene php dosyasının adı atanıyor*/
mailform = "mailform.php";

/*Gönder butonuna basılınca daha sonra tanımlanacak formGonder fonksiyonu çalışacaktır*/
buton0.onRelease = function(){
formGonder();
};

/*Sil butonuna basıldığında metin kutularını temizlemek için null değeri atanıyor*/
buton1.onRelease = function(){
kutu0.text="";
kutu1.text="";
kutu2.text="";
sonuc.text="";
};

/*Burada kutu1 yani email adresinin yazılması gereken alan denetleniyor.Sıra ile kutu1 e girilecek metin uzunluğu en az 7 rakam içermektedir.Bir @ işareti içermeli, @ işaretinden sonra en son tesbit edilen " ." işaretine kadar alanda en az 2 karakter bulunmalıdır ve son olarak noktadan sonra en az 2 karakter bulunmalıdır. Bunlar en az karakterle yazılabilecek standart email adresi şartlarıdır. Şayet şartlar yerine gelmişse sonuç true değilse false olarak dönecektir*/
function degerlendir() {
if (kutu1.text.length>=7){
if (kutu1.text.indexOf("@")>0){
if ((kutu1.text.indexOf("@")+2)<kutu1.text.lastIndexOf(".")){
if (kutu1.text.lastIndexOf(".")<(kutu1.text.length-2)){
return (true);
}}}}
return (false);
};

/*Şayet yukardaki şartlar false olursa mail kutusuna "hatalı email" ikazı gelecektir.Altta ise isim kutusuna hiç karakter yazılmamışsa veya 2 den az karakter girilmişse "isim gereklidir" yazılacak.Aynı işlem mesaj kutusu içinde istenmektedir.selection.setFocus() ise hatalı kutudaki metnin siyah renkle seçilip dikkati çekmesi amacı ile eklenmiştir*/
function formGonder() {
if (!degerlendir()){
kutu1.text = "Hatalı e-mail";
selection.setFocus(kutu1);
}
if (kutu0.text == null || kutu0.text.length < 2 ){
kutu0.text = "İsim gereklidir";
selection.setFocus(kutu0);
}
if (kutu2.text == null || kutu2.text.length < 2 ){
kutu2.text = "Mesaj yazmalısınız";
selection.setFocus(kutu2);
}

/* Bir şartı başlatıyoruz artık, yukarda tanımladığımız fonksiyonlar olumlu ise yani şartlar yerine getirilmişse (sırası ile degerlendir() fanksiyonu true ise ve kutularda ilgili hata mesajı yoksa) metin kutularına yazılan değerler php dosyasına gönderiliyor ve sonuc kutusuna "lütfen bekleyiniz..." şeklinde bir uyarı gönderiliyor.İşlem tamamlandıktan sonra mesaj iletiliyor ve sonuç kutusuna php dosyasında yazılmış olan "mailiniz gönderilmiştir" metni yükleniyor*/
if (degerlendir() && kutu0.text != "İsim gereklidir" && kutu2.text != "Mesaj yazmalısınız"){
formData = new LoadVars();
formData.fname = kutu0.text;
formData.email = kutu1.text;
formData.comments = kutu2.text;
formData.action = "send";
sonuc.text = "Lütfen bekleyiniz ...";
replyData = new LoadVars();
replyData.onLoad = function(success){
if(success){
sonuc.text = replyData.answer;
trace(replyData.answer); }
};

formData.sendAndLoad(mailform, replyData);
}
};

Çalışmamız bundan ibarettir. Flash içinde metin kutularına yazılan değerlerin Türkçe desteği için server php.ini dosyasında düzenleme yapılmış olmalıdır.Php konusunda sadece kullanabilecek kadar deneyimim olduğundan TR karakter sorununuz olursa bu konuda daha deneyimli arkadaşlardan destek almanızı öneririm.

NOT: Çalışmadaki Türkçe karakter ve gelen maildeki satır geçiş sorunu Aykut Ardıç (websayfası: http://www.fuardunyasi.com) arkadaşımız tarafından düzeltilmiştir. Desteği için kendisine teşekkür ederim. İndireceğiniz zip dosyasındaki php kodları revize edilmiştir.