PHP ile garantili mail göndermek

  02/05/2008, Yazar: Özgür Koca, Kategori: PHP

PHP’nin resmi sayfasında mail komutunun kullanımı hakkında şu bilgiler yer alıyor:

Kullanımı:

bool mail ( string $to  , string $subject  , string $message  [, string $additional_headers  [, string $additional_parameters  ]] )

Mail komutunda kullanılması zorunlu parametreler:

  • $to: PHP ile mail göndereceğiniz kişinin adresi. Tipi string’dir.
  • $subject: Mail’in konusu. Tipi string’dir.
  • $message: Göndermek istediğiniz mail’in içeriği. Tipi string’dir.

Not: String tipine Türkçe’mizde bazen katar bazen de karakter dizgesi adı verilmektedir.

Dördüncü ve beşinci parametrelerin kullanılması zorunlu olmamakla birlikte görevlerini kısaca söyle açıklayabiliriz.

  • $additional_headers: Bu kısımda, gönderen adresi, karbon kopya (CC) adresi ve gizli karbon kopya (BCC) adresi gibi adresler belirtilebilir. CC adresi, gönderilen mailin bir kopyasının da (karbon kopya) başka bir adrese gönderilmesini sağlar. CC alıcısı gelen mail’in başlık bilgilerinden mail’in asıl alıcısının kim olduğunu görebilir.  BCC, CC ye benzemekle birlikte, tek farkı, asıl alıcı ile CC alıcısının mail’in bir kopyasının da BCC adresine gönderildiğini bilememesidir. Mail sunucusu başlık bilgilerine bu adresi dahil etmez. Bu kısımın da veri tipi String’dir.
  • $additional_parameters: SendMail yazılımına parametre yollamak için kullanılıyormuş. Ayrıntısını şimdilik bilemeyeceğim.


En basit şekliyle mail komutunun kullanımı şu şekilde:

mail(‘ensei@tankado.com’, ‘Merhaba dostum’, ‘Beraber, 22 şubatta Recep İvediği izleyeceğiz degil mi?’);

http://tr2.php.net/manual/en/function.mail.php (PHP nin resmi sayfası)

HTML içerikli mail ve gönderilen mail’e dosya ekleme ile ilgili örnekler PHP.net’in yukarıdaki adresteki sayfasında var.

mail() komutuna ait örnek kodlar yüksek ihtimalle sunucunuzda çalışmayacak. Üzgünüm. Çalışmamasının sebebi paylaşımlı sunucunuzun güvenlik ayarlarının buna izin vermemesi. İzin verseydi mail spamcıları bayram ederdi, değilmi. Çünkü basitçe bir döngü ile çok sayıda mail göndermek mümkün olabilirdi. Ek olarak SendMail yazılımına da bu şekilde kolayca yük bindirmek, sunucunun IP adresini antispamlarin kara listesine aldirmak kolay olurdu. Bunun olması, aynı sunucuda binlerce domain’in barındırıldığı paylaşımlı (Shared) hostinglerde,  birçok siteyi olumsuz etkilerdi.

Not: Sunucunuzun antispam kara listesinde olup olmadığını dnsstuff.com adresindeki “Spam Database Lookup” formundan sorgulayabiliyorsunuz.

PHP ile gönderdiğiniz Mail’lerin karşıya ulaşmamasının bir başka nedeni de, mail’in geldiği IP adresi ile gönderen adresin alan adinin uyusmamasi.

Ornegin; mail’i gönderen php scripti 194.27.18.27 IP adresli bilgisayarda calisiyor olsun. Gönderen  adresi (from) ‘ensei@tankado.com’, karşı tarafın adresi de (to) ‘tankado@yahoo.com‘ olsun. Yahoo bir DNS sorgusu calistirarak tankado.com‘un IP adresinin 194.27.18.27 olmadigini yani gelen mail’in gerçekten de tankado.com sunucusundan gönderilmediğini kolayca anlayabilecektir. Sonuçta Yahoo bu mesajı ya bulk’a atar veya geri dönderir. (Eğer sender adres belirtmişse mesaj bu adrese geri gelir)

Not: alıcısına ulaşmayan e-posta’lar sahibine geri gönderilir. Tıpkı gerçek mektuplarda olduğu gibi elektronik mektuplarda da işleyiş bu şekildedir. Yeterki doğru bir gönder adresi olsun.

Sadede gelirsem, php mail’lerinin gecerli bir mail hesabi uzerinden gönderilmesi en sağlıklı yöntemdir. Sunucuda gecerli bir adres kullanmakta yetmez o adresin sahibi olduğunu sunucuya kanıtlamanız gerekir. Bunu da kullandığınız mail adresinin parolası ile sunucuda mail gönderim (smtp) oturumu açarak yapabilirsiniz. Aksi durumda sunucuda host edilen herhangi bir domain’e ait mail adresini de kullanabilecektiniz. Ama yüksek ihtimalle sunucunuzun konfigürasyonu buna izin vermiyor.

Aslında size garantili olarak mail gönderebilmek için aşağıdakiler gerekli ve yeterli.

  1. Herhangi bir SMTP mailer script’i.
  2. Bir eposta hesabi ve parolası.(ensei@tankado.com, parola: vn7360nv736)
  3. Epostamızın kayıtlı olduğu sunucunun IP adresi. (ping tankado.com)


Bazı SMTP Mailer scriptleri:

  1. http://xpertmailer.sourceforge.net/ (SSL desteği ile Gmail hesaplarınızı da kullanabilirsiniz)
  2. http://sourceforge.net/projects/phpmailer (SSL desteği ile Gmail hesaplarınızı da kullanabilirsiniz)
  3. http://mohanjith.net/SMTPMailer/
  4. http://email.about.com/od/emailprogrammingtips/qt/et073006.htm (PEAR Mail gerektirir)
  5. http://www.swiftmailer.org/


Aşağıdaki örnekte ‘i kullandım. Gerekli adres ve parola bilgilerini değiştirerek siz de kullanabilirsiniz. Bu script hosting’imizin mail sunucusuna bağlanıyor, mail ve parolamızla giriş yapıyor ve $to adresine mesajımızın gönderilmesini söylüyor.


require 'class.phpmailer.php';
require 'class.pop3.php';
$pop = new POP3();
$pop->Authorise('pop.tankado.com', 110, 30, 'ensei@tankadocom', 'vn736Onv736′, 1);
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 2;
$mail->IsHTML(false);
$mail->Host     = 'tankado.com';
$mail->From     = 'ensei@tankado.com';
$mail->FromName = 'Ensei Tankado';
$mail->CharSet = 'iso-8859-9';
$mail->Subject  =  'Merhaba dostum';
$mail->Body     =  'Beraber, 22 şubatta Recep İvediği izleyeceğiz degil mi?';
$mail->AddAddress('admin@nsa.gov', 'Mr. Big Brother');
if (!$mail->Send()) {
	echo $mail->ErrorInfo;
}

Umarım yararlı olur. Sorularınız varsa TDK’nın kurallarına uygun olarak aşağıya yazabilirsiniz.




phpmailer türkçe karakter sorunu (19), php mail türkçe karakter sorunu (15), php pop3 Mail gönderme (6), phpmailer türkçe karakter (5), Swift Mailer (4), swiftmailer kullanimi (3), php smtp mail script (3), php mail gönderme scripti (3), php mail gönderme örneği indir (2), php mailde türkçe karakter sorunu (2), php mail gönderme türkçe karakter (2), php ile mail gönderme smtp ayarlı script (2), php smtp türkçe karakter sorunu (2), phpmailer subject to türkçe karakter (2), php farklı adrese mail gönderme (2)







1 Puan2 Puan3 Puan4 Puan5 Puan6 Puan7 Puan8 Puan9 Puan10 Puan (3 votes, average: 8,00 out of 10)


7 yorum yapıldı



Biraz gürültü yapın





Not: Yazdığınız yorum yönetici tarafından onaylandıktan sonra yayınlanacaktır.


  Yorumlara eposta ile abone ol




  • Hakkında | İletişim | Wordpress.org | RSS | Abone Ol

  • (c) 2005-2009 Wordpress Tema: Tankado & Theme by Tankado.com