Raşit Apalak Kişisel Blog. Hmm!

29Ağu/1010

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.



Yorumlar (10) Geri izlemeler (1)
  1. Gönder dediğim zaman; gelen mailde içerik boş.Sadece body kısmındaki içerik geliyor.

  2. $_POST['Isim']; ve $_POST['Email']; alanları body kısmına eklemek istiyorum.
    nasıl yapılır??

  3. $mail->Body = “İsim : “.$_POST['Isim'].” E-mail : “.$_POST['Email'];

    Bu şekilde kullanabilirsiniz.

  4. teşekkürler tamda aradığım şeydi

  5. 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ı?

  6. 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

  7. @metintekin. Mailinizin içeriğinde html karakterleri kullanabilirsiniz. Satır aralığı vermek için de < br / > kodu kullananılır.

  8. @Tustas. O sitedeki script farklı sanırım. Hiç kullanmadım ama gördüğüm kadarıyla o script smtp kullanmıyor.

  9. 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

  10. ya bi örnek çalışma ekleyemezmisiniz acaba?


Yorum gönder.

Yorum yapabilmeniz için giriş yapmalısınız.