PHP ile E-Posta Gönderimi: PHPMailer ve SMTP Ayarları

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
PHP'de mail() fonksiyonu artık çoğu sunucu tarafından (güvenlik ve spam riskleri nedeniyle) devre dışı bırakılmış durumdadır. E-postalarınızın gerçekten alıcının gelen kutusuna ulaşmasını istiyorsanız, Gmail, Outlook veya kendi hosting şirketinizin SMTP sunucularını kullanmalısınız.

1. PHPMailer Kurulumu​


PHPMailer'ı projenize dahil etmenin en sağlıklı yolu Composer kullanmaktır. Terminalinize şu komutu yazarak kurulumu yapabilirsiniz:

Bash:
composer require phpmailer/phpmailer

Not: Eğer Composer kullanamıyorsanız, kütüphaneyi GitHub'dan indirip manuel olarak da projenize dahil edebilirsiniz.

2. SMTP ile E-Posta Gönderim Scripti​


Aşağıdaki kod bloğu, modern güvenlik katmanlarını (TLS/SSL) kullanan eksiksiz bir e-posta gönderim örneğidir.

PHP:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php'; // Composer kullanıyorsanız

$mail = new PHPMailer(true);

try {
// --- Sunucu Ayarları ---
$mail->isSMTP();                                            // SMTP kullan
$mail->Host       = 'https://www.google.com/search?q=smtp.hostinginiz.com';                 // SMTP sunucu adresi
$mail->SMTPAuth   = true;                                   // SMTP kimlik doğrulaması aktif
$mail->Username   = '[email protected]';                   // SMTP kullanıcı adı
$mail->Password   = 'guclu_sifre_buraya';                   // SMTP şifresi
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // TLS şifreleme (Port 587 için)
$mail->Port       = 587;                                    // SSL için 465, TLS için 587
$mail->CharSet    = 'UTF-8';                                // Türkçe karakter desteği

// --- Alıcı ve Gönderen Ayarları ---
$mail-&gt;setFrom(&#39;[email protected]&#39;, &#39;Forum Destek&#39;);
$mail-&gt;addAddress(&#39;[email protected]&#39;, &#39;Kullanıcı Adı&#39;);      // Alıcı ekle
$mail-&gt;addReplyTo(&#39;[email protected]&#39;, &#39;Bilgi&#39;);

// --- İçerik Ayarları ---
$mail-&gt;isHTML(true);                                        // E-posta formatı HTML olsun
$mail-&gt;Subject = &#39;Üyeliğiniz Onaylandı!&#39;;
$mail-&gt;Body    = &#39;&lt;h1&gt;Hoş Geldiniz!&lt;/h1&gt;&lt;p&gt;Forumumuza kaydınız başarıyla tamamlanmıştır.&lt;/p&gt;&#39;;
$mail-&gt;AltBody = &#39;HTML desteklemeyen istemciler için düz metin mesajı.&#39;;

$mail-&gt;send();
echo &#39;Mesaj başarıyla gönderildi.&#39;;

} catch (Exception $e) {
echo "Mesaj gönderilemedi. Hata: {$mail->ErrorInfo}";
}
?>

3. SMTP Ayarları Karşılaştırma Tablosu​


Kullanacağınız servise göre ayarlar değişiklik gösterebilir:

ServisSMTP HostPortŞifreleme
Gmail 587STARTTLS
Outlooksmtp.office365.com587STARTTLS
Özel Hostingmail.alanadiniz.com465 / 587SSL / TLS

4. E-Postaların Spama Düşmemesi İçin Altın Kurallar​



  • [] Kimlik Doğrulama: Mutlaka SMTPAuth = true kullanın.
    [] Hız Sınırı: Çok kısa sürede binlerce e-posta göndermek sunucunuzun kara listeye (Blacklist) girmesine neden olur.
    [] SPF ve DKIM Kayıtları: Alan adınızın DNS ayarlarında SPF ve DKIM kayıtlarının yapılmış olması, e-postalarınızın güvenilirliğini %90 artırır.
    [] Gerçek Gönderici: Gönderen adresi (setFrom) ile SMTP kullanıcı adınızın aynı olması çoğu sunucuda zorunludur.

Sonuç​


PHPMailer, PHP dünyasında e-posta gönderimi için endüstri standardıdır. Bu kütüphaneyi kullanarak hem HTML içerikli, hem de dosya ekli (Attachment) e-postaları güvenle gönderebilirsiniz. Unutmayın, kullanıcılarınıza ulaşmayan bir e-posta, tamamlanmamış bir işlemdir.
 
Geri
Üst