Posts

Form İle Yüklenen Dosyayı Maile Ekleyerek Yollamak

Not: Bu yazıyı yazdığımdan bu yana sınıf güncellenmiş olabilir. Bazı değişiklikler içeriyor olabilir.

Ben ilk web sitesi işimi yaparken gelen isteğe göre karşılaştığım istek bir formda gönderilen iki adet resmi ve bilgileri mail olarak gönderebilmek. Normal mail fonksiyonunu biliyordum ama yüklenen dosyaları nasıl ekleyip göndereceğimi bilmiyordum. Daha sonra en iyisi bununla ilgili bir class arayayım dedim ve google amcaya sordum. İlk satırda PhpMailer classını gördüm ve indirip siteye dahil ettim.

Classın dosyalarını site dosyaları içine attıktan sonra aşağıdaki kodları eklemeniz yeterli olacaktır aslında.

require 'PHPMailerAutoload.php';
//Dosyaları nereye attıysanız ona göre yazarsınız.
$mail = new PHPMailer;
$mesajmetni=' ';
//Normalde bu değişken yoktu ama form ile gelen verileri bu değişkene aktarmayı tercih ettim ben.
$mail->setLanguage('tr', '/directory/');
//Hata mesajlarının türkçe olmasını sağlıyor.
$mail->CharSet='SET NAMES UTF8';
// Mailin karakter setini utf-8 olarak atayarak olası türkçe karakter sıkıntısını çözüyoruz.
$mail->isSMTP();
// Ayarları SMTP olarak seçmiş oluyoruz.
$mail->Host = 'smtp1.example.com;smtp2.example.com';
// SMTP sunucu bilgilerini yazıyoruz.
$mail->SMTPAuth = true;
// SMTP Kimlik doğrulamasını aktif hale getiriyoruz. Pasif yapmak için true'yu false yapmalıyız.
$mail->Username = 'jswan';
// SMTP kullanıcı adı
$mail->Password = 'secret';
// SMTP şifre
$mail->SMTPSecure = 'tls';
// tls şifrelesi standart olarak aktiftir zaten. Ssl de kabul ediyor.
$mail->From = 'from@example. com';
//Hangi mail adresinden göndereceğimizi yazıyoruz.
$mail->FromName = 'Mailer';
// Gönderen ismini yazıyoruz.
$mail->addAddress('josh@example. net', 'Josh Adams');
// Mail gönderilecek ismi yazıyoruz. İsim tamamen isteğe bağlı.
$mail->addAddress('ellen@example. com');
$mail->addReplyTo('info@example. com', 'Information');
//Yanıtla dendiğinde nereye mail gönderileceğini belirlemek için burayı kullanıyoruz.
$mail->addCC('cc@example. com');
// Ccye mail adresi eklemek için bunu kullanıyoruz.
$mail->addBCC('bcc@example. com');
$mail->WordWrap = 50;
// Word Wrap kaç karakter olacağı. Ben de bilmiyordum sizde google amcaya sorun işte.
$mail->addAttachment('/var/tmp/file.tar.gz');
// Eklenecek dosyanın nerede olduğunu yazmamız gerekiyor. Eğer $_FILES'daki dosyayı
//bir yere taşıdıysanız orayı yazın. Ben direk $_FILES['tmp_name'] yazdım bir yere taşımadan.
//Böylece işlem bittiğinde sunucudan siliniyor. Ama bunu yaparsanız aşağıdaki
//isim vermeyi kullanın. Çünkü bin uzantılı olarak gönderir yoksa.
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');
// Burada ise yüklenen isme yeni isim verme seçeneği var. Tercihe bağlı.
$mail->isHTML(true);
// Emaili html formatında göndermeye onay veriyoruz.
$mail->Subject = 'Here';
// Mail'in başlığı.
$mail->Body = ' body <b>in bold!</b>';
// Mail içeriği. $mesajmetni değişkenimi koydum buraya ben direk.
$mail->AltBody = 'body';
// Buraya da alıcı taraf eğer html görüntüyü desteklemiyorsa ne gözükmesi gerektiğini yazıyoruz.
if(!$mail->send()) {
echo 'Message could not be sent.';
// Burada ise mail gönderiminin başarısız olup olmadığını kontol ediyor. Başarısız ise ekranda ne yazacağı gözüküyor.
echo 'Mailer Error: ' . $mail->ErrorInfo;
// Burada ise classın geri döndürdüğü hata bilgisini yazdırıyor.
exit;
// Exit yapıyor ama ben bunu silmenizi tavsiye ederim. Çünkü bu noktadan sonraki hiç bir kod çalışmaz.
}
echo 'Message has been sent';
// Exit'i silmez iseniz yukarı çalışmadığında doğal olarak burası çalışır.
//Ama ben else kullanarak burasını yazdırtmayı uygun gördüm.

Evet bu şekilde rahatlıkla yüklenen dosyayı otomatik olarak maile ekleyerek gönderebilirsiniz. Benden şimdilik bu kadar. Sağlıcakla kalın.

ICEcoder IDE – Tarayıcıda Kod Yazmak

ICEcoder – Güzel Bir IDE

Icecoder rahatlıkla indirebileceğiniz php tabanlı bir ide. Üstelik tek yapmanız gereken http://icecoder.net/ adresinden indirip sunucuya yüklemek yetiyor. Ben public_html içinde bir klasör oluşturup onun altına atıyorum. Daha sonra www.ornekdomain.com/icecoder/ olarak tarayıcıdan ilk girişinizde sizden şifre belirlemenizi istiyor. Daha sonra o şifreyle giriş yapıyorsunuz. Güçlü bir şifre oluşturun tavsiyem.

ICEcoder - Giriş Ekranı

ICEcoder – Giriş Ekranı

Açık kaynak olan ve destek bekleyen bir proje aslında. Sitesinde google grubunu bulabilirsiniz mesela. Kod yazım ekranı çok güzel. Ama htmlde çok düzensiz olursanız ve etiket içinde etiketin sınırlarını zorlarsanız doğal olarak tarayıcı zorlanabilir. Aşağıda etiket zincirini gösteriyor çünkü. Ben bir kere denk geldim ve tarayıcı kitlendi. Ama o sırada kullandığım bilgisayar kötü onu da belirteyim.

Kod Yazımı

ICEcoder - Kod Yazım Ekranı

ICEcoder – Kod Yazım Ekranı

Kod yazımı oldukça güzel ve hızlı. Yaptığım bir siteyi bununla canlı olarak devam ettim ve orada 6bin satır kod olmasına rağmen banamısın demedi. Ama kaydetme süresi normalde 1 saniye bile değilken 2-3 saniyeye çıktı. Bunu normal karşılıyorum. Tablet bilgisayarda açmayı denedim ama kullandığım tablette zorlandım. Çift tıklayarak dosyalar açıldığı için normalde ve android işletim sisteminde mouse taksanız bile çift tıklama olmadığından dosyaları açmanın tek yolu file/open menüsünden /dosyaismi şeklinde dosya yolunu belirlemek tek seçenek.

Eklentiler

ICEcoder - Eklentiler

ICEcoder – Eklentiler

Orada bir sürü eklentiler mevcut. Mouse en sola götürüldüğünde gizli küçük bir menü açılıyor. Orada +/- bölümüne tıkladığınızda bu pencere geliyor. Adminer-MYSQL database manager güzel bir eklenti. Veritabanı kullanıcı adı ve şifre bilgileri ile veritabanına bağlanabiliyor ve yönetebiliyorsunuz. Terminal sunucu terminaline bağlanmak diye biliyorum ama kurup denemedim. CSS Beautify denen bir şey var yükledim ama hiç bir şey olmadı değişmedi. Tıklayınca açılmıyor da. Çözemedim. Diğerlerini ise hiç deneme uğraşmadım.

Hatalar

Eğer benim gibi ctrl+s tuşuna birden fazla seri şekilde basarak kaydediyorsanız siz de eğer bu alışkanlıktan vazgeçip bir kere basmayı öğreneceksiniz. Bu kaydedilemiyor diye hata vermesine sebep veriyor. Ama tamam deyip tek bir sefer basarak kaydederseniz kaydediyor hatadan sonra. Bir iki defa yaşadım başka bir sorunu. O da kaydetti gözükmesine rağmen değişiklikleri kaydetmediği oluyor. Bunu yapması için değişiklikleri kopyalayıp, dosyayı kapatıp yeniden açıp değişiklikleri yapıştırmak gerekiyor. Yoksa kaydetmiyor bir türlü.

Genel itibari ile benden 10 üzerinden 9 almış olup artık bunu kullanacağım. Size de tavsiye ederim.

PhpMailer – Form İle Yüklenen Dosyayı Maile Ekleyerek Yollamak

PhpMailer bu işlemler için oluşturulmuş oldukça kolay bir classtır.

PhpMailer bu işlemler için oluşturulmuş oldukça kolay bir classtır.

Herkese merhaba arkadaşlar.

Uzun bir zaman geçti. Ne yazı yazabildim ne de sayfamda paylaşım yaptım. Uzun bir süreçte aşırı bir yoğunluk ve isteksizlik içerisindeydim. Çalıştığım yerdeki stres dışında php kursum ve yapmakta olduğum bir web sitesi ile uğraşmam sonucunda hiç vaktim kalmıyordu. Artık kursum bitti ve zamanım arttığına göre yazılarıma devam ederim.

İlk kursum html ve css üzerine idi. Sertifikamı aldım ve tasarım işine köşesinden girdim. Ama web programlama daha hoşuma gidiyor diyeyim. Şu an yeni biten kursum ise php&mysql kursum. Proje ödevimi de az önce mail olarak yolladım. Hazır fırsat bu fırsat iken php ve web programcılığı yolculuğuma yeni başlıyorum ve bu süreçte yaptığım keşifleri nelerle hangi sorunlarla karşılaştığımı yazarsam hem benim için sonrası başvurabileceğim bir kaynak hem de başkaları için bir yol olur düşüncesi geldi aklıma. Bugün de bilişim kategorimi oluşturdum.

Ben ilk web sitesi işimi yaparken gelen isteğe göre karşılaştığım istek bir formda gönderilen iki adet resmi ve bilgileri mail olarak gönderebilmek. Normal mail fonksiyonunu biliyordum ama yüklenen dosyaları nasıl ekleyip göndereceğimi bilmiyordum. Daha sonra en iyisi bununla ilgili bir class arayayım dedim ve google amcaya sordum. İlk satırda PhpMailer classını gördüm ve indirip siteye dahil ettim.

Classın dosyalarını site dosyaları içine attıktan sonra aşağıdaki kodları eklemeniz yeterli olacaktır aslında.

require 'PHPMailerAutoload.php';
 //Dosyaları nereye attıysanız ona göre yazarsınız.
$mail = new PHPMailer;
$mesajmetni=" ";
 //Normalde bu değişken yoktu ama form ile gelen verileri bu değişkene aktarmayı tercih ettim ben.
$mail->setLanguage('tr', '/directory/');
 //Hata mesajlarının türkçe olmasını sağlıyor.
 $mail->CharSet='SET NAMES UTF8';
 // Mailin karakter setini utf-8 olarak atayarak olası türkçe karakter sıkıntısını çözüyoruz.
$mail->isSMTP();
 // Ayarları SMTP olarak seçmiş oluyoruz.
 $mail->Host = 'smtp1.example.com;smtp2.example.com';
 // SMTP sunucu bilgilerini yazıyoruz.
 $mail->SMTPAuth = true;
 // SMTP Kimlik doğrulamasını aktif hale getiriyoruz. Pasif yapmak için true'yu false yapmalıyız.
 $mail->Username = 'jswan';
 // SMTP kullanıcı adı
 $mail->Password = 'secret';
 // SMTP şifre
 $mail->SMTPSecure = 'tls';
 // tls şifrelesi standart olarak aktiftir zaten. Ssl de kabul ediyor.
$mail->From = 'from@example.com';
 //Hangi mail adresinden göndereceğimizi yazıyoruz.
 $mail->FromName = 'Mailer';
 // Gönderen ismini yazıyoruz.
 $mail->addAddress('josh@example.net', 'Josh Adams');
 // Mail gönderilecek ismi yazıyoruz. İsim tamamen isteğe bağlı.
 $mail->addAddress('ellen@example.com');
 $mail->addReplyTo('info@example.com', 'Information');
 //Yanıtla dendiğinde nereye mail gönderileceğini belirlemek için burayı kullanıyoruz.
 $mail->addCC('cc@example.com');
 // Cc'ye mail adresi eklemek için bunu kullanıyoruz.
 $mail->addBCC('bcc@example.com');
$mail->WordWrap = 50;
 // Word Wrap kaç karakter olacağı. Ben de bilmiyordum sizde google amcaya sorun işte.
 $mail->addAttachment('/var/tmp/file.tar.gz');
 // Eklenecek dosyanın nerede olduğunu yazmamız gerekiyor. Eğer $_FILES'daki dosyayı
 //bir yere taşıdıysanız orayı yazın. Ben direk $_FILES['tmp_name'] yazdım bir yere taşımadan.
 //Böylece işlem bittiğinde sunucudan siliniyor. Ama bunu yaparsanız aşağıdaki
 //isim vermeyi kullanın. Çünkü bin uzantılı olarak gönderir yoksa.
 $mail->addAttachment('/tmp/image.jpg', 'new.jpg');
 // Burada ise yüklenen isme yeni isim verme seçeneği var. Tercihe bağlı.
 $mail->isHTML(true);
 // Emaili html formatında göndermeye onay veriyoruz.
$mail->Subject = 'Here';
 // Mail'in başlığı.
 $mail->Body = ' body <b>in bold!</b>';
 // Mail içeriği. $mesajmetni değişkenimi koydum buraya ben direk.
 $mail->AltBody = 'body';
 // Buraya da alıcı taraf eğer html görüntüyü desteklemiyorsa ne gözükmesi gerektiğini yazıyoruz.
if(!$mail->send()) {
 echo 'Message could not be sent.';
 // Burada ise mail gönderiminin başarısız olup olmadığını kontol ediyor. Başarısız ise ekranda ne yazacağı gözüküyor.
 echo 'Mailer Error: ' . $mail->ErrorInfo;
 // Burada ise classın geri döndürdüğü hata bilgisini yazdırıyor.
 exit;
 // Exit yapıyor ama ben bunu silmenizi tavsiye ederim. Çünkü bu noktadan sonraki hiç bir kod çalışmaz.
 }
echo 'Message has been sent';
 // Exit'i silmez iseniz yukarı çalışmadığında doğal olarak burası çalışır.
 //Ama ben else kullanarak burasını yazdırtmayı uygun gördüm.

 

Evet bu şekilde rahatlıkla yüklenen dosyayı otomatik olarak maile ekleyerek gönderebilirsiniz. Benden şimdilik bu kadar. Sağlıcakla kalın.