mail() fonksiyonu PHP’ye entegre edilmiştir ve e-postaları doğrudan bir web sunucusundan göndermek için kullanılır. Bildirimler, iletişim formu mesajları, sipariş onayları ve diğer türdeki mesajları göndermenin basit bir yoludur.

Harici kütüphaneler kullanmadan temel e-posta işlevselliği için uygundur.

mail() Nasıl Çalışır

mail() fonksiyonunu çağırdığınızda, PHP e-postayı sunucuda kurulu olan sistemin posta transfer aracısına (MTA) iletir (genellikle Sendmail veya Postfix). MTA daha sonra mesajı işleyip belirtilen adrese teslim eder.

 Sözdizimi

mail(to, subject, message, headers, parameters);

 Parametreler

ParametreAçıklama
$toAlıcının e-posta adresi. Virgülle ayrılmış birden fazla adres belirtebilirsiniz.
$subjectE-postanın konusu. Satır sonları içermemelidir.
$messageMesajın ana gövdesi.
$headersFrom, Reply-To, Cc, Bcc gibi ek başlıklar.
$parametersSendmail için göndereni belirtme gibi ekstra parametreler (-f).

Basit Örnek

<?php
$to = "user@example.com";
$subject = "Test Email";
$message = "Hello! This is a test email sent using PHP.";
$headers = "From: webmaster@yourdomain.com";

mail($to, $subject, $message, $headers);
?>

 Önemli Notlar

1. From: Başlığı Zorunludur

Eğer bir From: başlığı belirtmezseniz, çoğu posta sunucusu mesajı şüpheli veya spam olarak reddedecektir.

$headers = "From: noreply@yourdomain.com";

2. Çok Satırlı Mesajların Biçimlendirilmesi

Mesajınızdaki satırları ayırmak için rn kullanın:

$message = "Hello,rnrnThank you for your order.rnrnBest regards,rnYour Team";

3. Birden Fazla Başlık

Reply-To, Cc ve Bcc gibi birden fazla başlığı ayırmak için rn kullanın:

$headers = "From: admin@yourdomain.comrn";
$headers .= "Reply-To: support@yourdomain.comrn";
$headers .= "Cc: someone@yourdomain.comrn";

Örnek: HTML E-posta Gönderimi (Sadece Metin)

mail() fonksiyonu yerel olarak ekleri desteklemez. Ancak HTML e-postaları gönderebilir veya içerik türünü manuel olarak ayarlayabilirsiniz:

$headers  = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=UTF-8rn";
$headers .= "From: info@yourdomain.com";
$message = "<h1>Hello!</h1><p>Your order has been received.</p>";
mail("user@example.com", "Order Confirmation", $message, $headers);

 Yaygın Sorunlar ve Çözümler

ProblemNeden / Çözüm
E-posta teslim edilmediEksik From: başlığı veya sunucu IP’si kara listede
E-posta hiç gönderilmiyorHiçbir MTA kurulu değil (ör. Sendmail/Postfix gerekli)
Hata: mail() devre dışı bırakıldımail() php.ini’de devre dışı bırakıldı (genellikle host politikası nedeniyle)
Rusça metin ???? olarak görünüyorBaşlıklarda charset UTF-8 olarak ayarlanmamış
E-postalar spam klasörüne gidiyorYanlış From, SPF/DKIM yok, veya yanlış yapılandırılmış alan adı

 Sonuç

mail() fonksiyonu, PHP betiklerinden doğrudan e-posta göndermek için temel ama güçlü bir araçtır. Şunlardır:

  • Kullanımı kolaydır
  • Ek kütüphaneler gerektirmez
  • İç bildirimler, iletişim formları ve otomatik yanıtlayıcılar için uygundur

Ancak, sınırlamalarını göz önünde bulundurmalısınız:

  • Sunucunun posta yapılandırmasına bağlıdır
  • Eklere destek vermez
  • Bazı paylaşımlı barındırma ortamlarında varsayılan olarak devre dışı bırakılabilir

Eğer düzenli olarak e-posta göndermeyi planlıyorsanız, sunucunuzun çıkış postası için doğru şekilde yapılandırıldığından emin olun (Sendmail/Postfix kurulu, SPF/DKIM kayıtları ayarlanmış ve mail() php.ini’de etkinleştirilmiş olmalıdır).