PHP doğrudan e-posta göndermek için kendi içerisinde dahili mail() fonksiyonunu barındırır. Bu fonksiyonun kullanımı çok kolay ve etkilidir ancak ciddi birkaç sorunu bulunur.
Öncelikle ana sunucuya büyük bir yük bindirir, e-posta teslimatı konusunda hiçbir garanti vermez. En önemli eksisi (bana göre) mail() fonksiyonunu birçok sunucu spam koruması için engeller. Yani yazmış olduğunuz kod 2 ay sonra çalışmayabilir.
Son dönemde bu sorunla karşılaşanlar tarafından sık sık benzer sorularla karşılaşıyorum. Bu makalemde umarım bu sorunu birlikte halledebileceğiz.
PHPMailer, popüler ve kullanımı kolay bir e-posta gönderim kütüphanesidir. Bu kütüphane, SMTP sunucusunu yapılandırmamıza izin vererek sunucu yükü sorununu ortadan kaldırır, e-posta teslimatını size garanti eder. Ve en önemlisi sunucular tarafından hiçbir şekilde engellenemez.
Haydi Başlayalım!
Öncelikle PHPMailer kütüphanesini indirmeniz gerekiyor. Sizi hemen şuraya alalım.
Dosyayı indirdikten sonra zip dosyasını public_html dosyanıza aktarın. Dosyayı açtıktan sonra public_html / PHPMailer_5.2.0 klasör yapısına sahip olacağız.
1 2 3 4 5 6 7 8 | <form method="post" action="email.php"> Email: <input name="email" id="email" type="text" /><br /> Message:<br /> <textarea name="message" id="message" rows="15" cols="40"></textarea><br /> <input type="submit" value="Gönder" /> </form> |
Yukarıda örnek bir form oluşturduk, şimdi gönderim işleminin yapıldığı yere geçelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?php $email = $_REQUEST['email'] ; $message = $_REQUEST['message'] ; require("class.PHPMailer.php"); $mail = new PHPMailer(); $mail->IsSMTP(); // SMTP Kullanacağız $mail->Host = "mail.example.com;mail2.example.com"; // Ana mail sunucumuz $mail->SMTPAuth = true; // SMTP erişimini açalım $mail->Username = "jswan@example.com"; // SMTP kullanıcı adı $mail->Password = "secret"; // SMTP şifre $mail->From = $email; $mail->FromName = "Mailer"; $mail->AddAddress("josh@example.net", "Josh Adams"); $mail->AddAddress("ellen@example.com"); $mail->AddReplyTo("info@example.com", "Information"); $mail->WordWrap = 50; // set word wrap to 50 characters $mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments $mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name $mail->IsHTML(true); // set email format to HTML $mail->Subject = "İletişim Mesajı"; $mail->Body = $message; $mail->AltBody = $message; if(!$mail->Send()) { echo "Mesaj gönderilemedi. <p>"; echo "Mailer Error: " . $mail->ErrorInfo; exit; } echo "Mesaj başarıyla gönderildi."; ?> |
Bir sonraki makalemizde görüşmek üzere.
Slm. Paylaşım için teşekkürler. Fakat katılmadığım bir nokta var. PHPMailer kolay diyorsunuz (sadece siz değil tüm camia diyor) fakat ben 15 gündür uğraşıyorum bir türlü kurulmuyor. Neden mi? * Kod paylaşanlar eksik tanımlama yapıyor. Örneğin phpMailer dosyalarının server tarafında hangi klasöre yapıştırılacağı belirsiz kimse bunu tam olarak izah etmiyor. * phpMailer ‘de smtp için google kullanıldığında google yetki vermediği için MX hatası veriyor. gmailde yapılması gereken ekstra işlemler var, kimse bundan bahsetmiyor. Herkes kolaylığından bahsediyor. Eğer bu kolaysa zoru düşünemiyorum bile.. * Hazır kodlar hiç bir işe yaramıyor. Sonuçta güvenlik önlemi yeterli alınmadığı için bir süre sonra siteniz hackleniyor. Örnek… Read more »
ALLAH RAZI OLSUN…