PHPMailer ile SMTP kullanarak form mail gönderme
Php ile form mail işlemleri genelde mail() fonksiyonu kullanılarak yapılır. Fakat bu fonksiyon spam maile müsait olduğu için genelde hosting firmaları tarafından engellenir. Php ile mail göndermenin diğer bir yolu da SMTP protokolünü kullanmaktır. SMTP protokolü sunucuda varolan bir mail hesabıyla oturum açarak, bu hesap üzerinden mail göndermenizi sağlar.
SMTP ile mail göndermek için yazılmış olan çok başarılı bir kütüphane bulunmakta. PHPMailer.
Şimdi PHPMailer'in kullanımını anlatmaya çalışacağım.
İlk önce şu adresten PHPMailer'i indiriyoruz. rar dosyasını açtıktan sonra ihtiyacımız olan class.phpmailer.php ve class.smtp.php dosyalarını formmailimizin bulunduğu dosya ile aynı dizine atıyoruz.
Form mailimizin php kısmındaki kodlar şu şekilde:
require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->AddAddress("mail@alanadi.com","Bizim Site");
$mail->Subject = "İletişim Formu";
$mail->Body = "Mail içeriği";
$mail->IsSMTP();
$mail->Host = "mail.alanadi.com";
$mail->SMTPAuth = true;
$mail->Username = "formmail@alanadi.com";
$mail->Password = "123456";
$mail->IsHTML(true);
$mail->From = $_POST['Email'];
$mail->FromName = $_POST['Isim'];
$mail->Send();
PHPMailer class'ımızı çağırıyoruz ve bir değişkene atıyoruz.
require_once("class.phpmailer.php");
$mail = new PHPMailer();
Bundan sonraki kodlar PHPMailer'in özelliklerinin kullanıldığı kodlardır.
$mail->AddAddress("mail@alanadi.com","Bizim Site");
Mailin gönderileceği adresi belirtir. Bu satır çoğaltılarak birden fazla adrese mail gönderilebilir.
Ayrıca başka bir satır ekleyerek mailimizi BCC olarak başka adreslere de gönderebiliriz.
$mail->AddBCC("mail@baskaalanadi.com","Başka mail");
$mail->Subject = "İletişim Formu";
Gidecek mailin başlığını belirtir.
$mail->Body = "Mail içeriği";
Mailimizin içeriğini belirtir. Form mail gönderirken genelde tablo olarak gönderilmesini isteriz. Buraya istediğimiz gibi tablo kodlarını ekleyerek gönderilmesini sağlayabiliriz. Yalnız bunun için aşağıda yazmış olduğum $mail->IsHTML(true); kodunu eklemek zorundayız.
$mail->IsSMTP();
Kullanacağımız protokolün SMTP olduğunu belirtir.
$mail->Host = "mail.alanadi.com";
SMTP sunucu adresi
$mail->SMTPAuth = true;
true olarak belirtilmişse sunucuda oturum açılacağı anlamına gelir.
$mail->Username = "formmail@alanadi.com";
Mail hesabımızın kullanıcı adı. Genelde mail adresi ile aynı olur.
$mail->Password = "123456";
Şifremiz
$mail->IsHTML(true);
Göndermek istediğimiz içerikte HTML kodlarına izin verilmesi gerektiğini belirtir.
$mail->From = $_POST['Email'];
Gönderilecek mailde kimden kısmını belirtir(E-mail).
$mail->FromName = $_POST['Isim'];
Gönderilecek mailde kimden kısmını belirtir(Ad Soyad).
$mail->Send();
Maili gönderir.
PHPMailer mail göndermek için 25 nolu portu kullanır. Bazı hosting firmaları ve tabiki internet servis sağlayıcıları 25 numaralı portu engellemektedir. Bu yüzden yeni bir satır ekleyerek kullanılacak portu değiştirmemiz gerekir. Şu anda TTnet 587 numaralı portu açık tutuyor.
$mail->Port = 587;
Hepsi bu kadar. Sorularınızı iletişim bölümünden ya da yazı altına yorum ekleyerek iletebilirsiniz.




15 Aralık 2010, 20:39
Gönder dediğim zaman; gelen mailde içerik boş.Sadece body kısmındaki içerik geliyor.
10 Ocak 2011, 12:29
$_POST['Isim']; ve $_POST['Email']; alanları body kısmına eklemek istiyorum.
nasıl yapılır??
10 Ocak 2011, 13:24
$mail->Body = “İsim : “.$_POST['Isim'].” E-mail : “.$_POST['Email'];
Bu şekilde kullanabilirsiniz.
01 Nisan 2011, 05:35
teşekkürler tamda aradığım şeydi
23 Nisan 2011, 13:51
mesaj mailbox a düştüğünde tüm veriler aynı satıra yazılıyor. herşeyi denedim ama alt alta yazdıramadım. öneriniz var mı?
30 Nisan 2011, 06:18
Merhaba,
http://www.phphq.net sitedeki phMailer.php için bu uygulanır mı?
Emailer spama düşüyor bunu önlemek için SMTP ile göndermek lazım ama uyarlayacağız bilmiyoruz bizde acemiyiz yardımcı olursanız seviniriz
06 Mayıs 2011, 14:11
@metintekin. Mailinizin içeriğinde html karakterleri kullanabilirsiniz. Satır aralığı vermek için de < br / > kodu kullananılır.
06 Mayıs 2011, 14:13
@Tustas. O sitedeki script farklı sanırım. Hiç kullanmadım ama gördüğüm kadarıyla o script smtp kullanmıyor.
08 Mayıs 2011, 02:09
Evet phMailer SMTP kullanmıyor Ancak ben deneme yanılma ile entegre etmeyi başardm PHPMailer 5.1 kullanarak SMTP ile gönderiyor mükemmel olduda ve phMailer forumunda kodları paylaştım http://www.novahq.net/forum/showthread.php?t=45912
02 Haziran 2011, 18:41
ya bi örnek çalışma ekleyemezmisiniz acaba?