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.
PHPMailer'ı projenize dahil etmenin en sağlıklı yolu Composer kullanmaktır. Terminalinize şu komutu yazarak kurulumu yapabilirsiniz:
Not: Eğer Composer kullanamıyorsanız, kütüphaneyi GitHub'dan indirip manuel olarak da projenize dahil edebilirsiniz.
Aşağıdaki kod bloğu, modern güvenlik katmanlarını (TLS/SSL) kullanan eksiksiz bir e-posta gönderim örneğidir.
Kullanacağınız servise göre ayarlar değişiklik gösterebilir:
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.
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->setFrom('[email protected]', 'Forum Destek');
$mail->addAddress('[email protected]', 'Kullanıcı Adı'); // Alıcı ekle
$mail->addReplyTo('[email protected]', 'Bilgi');
// --- İçerik Ayarları ---
$mail->isHTML(true); // E-posta formatı HTML olsun
$mail->Subject = 'Üyeliğiniz Onaylandı!';
$mail->Body = '<h1>Hoş Geldiniz!</h1><p>Forumumuza kaydınız başarıyla tamamlanmıştır.</p>';
$mail->AltBody = 'HTML desteklemeyen istemciler için düz metin mesajı.';
$mail->send();
echo 'Mesaj başarıyla gönderildi.';
} 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:
| Servis | SMTP Host | Port | Şifreleme |
|---|---|---|---|
| Gmail | 587 | STARTTLS | |
| Outlook | smtp.office365.com | 587 | STARTTLS |
| Özel Hosting | mail.alanadiniz.com | 465 / 587 | SSL / 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.