Posts

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.