İletişim formu e-postaları sitemize hiç gelmiyor, spam klasörüne mi gitti, yoksa sunucumun sorunu mu — bu soru birçok WordPress site sahibini endişelendirir. Özellikle Contact Form 7 (CF7) kullanıyorsanız ve e-posta ayarlarını hiç değiştirmediyseniz, formdan gelen e-postalar büyük ihtimalle WordPress'in yerleşik wp_mail() işlevini kullanarak gönderiliyordur — ve bu da sorunun temel sebebidir.
WordPress İletişim Formları Neden Çalışmıyor?
Contact Form 7, WPForms, Gravity Forms gibi popüler eklentiler, özel bir gönderim yöntemi belirtilmediği sürece WordPress'in native wp_mail() işlevini çağırırlar. Bu işlev, sunucunun standart PHP posta kütüphanesine (genelde Sendmail veya Postfix) bağlanır — ve sunucu IP adresi, domain SPF/DKIM kayıtlarıyla hizalı olmadığı için, Gmail, Outlook, Yandex gibi büyük e-posta sağlayıcıları bu e-postaları kolayca spam olarak işaretlerler.
Başka bir deyişle: form gönderdiğiniz zaman WordPress hiçbir hata mesajı göstermeyebilir (sistem "gönderildi" der), ama alıcı eline asla ulaşmaz — e-posta ya spam klasörüne düşer, ya da tamamen reddedilir.
wp_mail() Fonksiyonunun Temel Sınırlamaları
WordPress'in yerleşik wp_mail() işlevi üç kritik sorunla karşı karşıyadır:
- SPF ve DKIM Hizalaması Yok: Sunucu IP'si, domain SPF kaydında listelenmemişse veya DKIM imzası atılmışsa, alıcı sunucular bu e-postayı sahte olarak tanır.
- Sunucu IP'sinin İtibarı Düşük: Web sunucusu IP'si daha önce başkaları tarafından spam göndermek için kullanılmışsa, o IP'nin itibarı zedelenmiştir — yeni siteleriniz de bu olumsuz tarihçeden etkilenir.
- SMTP Kimlik Doğrulaması Yok:
wp_mail()doğrudan yerel Sendmail/Postfix'e konuşur; SendGrid, Brevo gibi harici SMTP sunucusu üzerinden göndermiyor, dolayısıyla bu sağlayıcıların saygın IP havuzundan faydalanmıyor.
Sonuç: yeni domainler ve az trafikli siteler neredeyse garantili olarak spama düşer.
E-postaların Gelip Gelmediğini Nasıl Test Edebilirsiniz?
Sorunu tanılamak için bu kontrol listesini takip edin:
- Kendi e-postanıza form gönderin: Gmail/Outlook/Yandex spam klasörüne bakın. Orada mı? O zaman spam filtresinden geçemiyor.
- WordPress debug log'u kontrol edin:
/wp-content/debug.logdosyasına bakın (eğer debug etkinse).wp_mail()hatası yazıyor mu? - Sunucu posta log'u: Hosting panelinde (cPanel, Plesk, vb.) posta gönderimi kaydını kontrol edin. Hata mesajı var mı?
- Ücretsiz inbox placement test yapın: check.live-direct-marketing.online üzerinde e-postanızı test edin — sistem gerçek Gmail, Outlook, Yandex kutularında hangi klasöre düştüğünü ekran görüntüsüyle gösterecektir.
WP Mail SMTP Eklentisi ile Çözüm
En pratik çözüm: "WP Mail SMTP" (ücretsiz) eklentisini yükleyin ve Brevo, SendGrid veya benzer harici SMTP sağlayıcıları üzerinden mail gönderin.
Kurulum adımları:
- WordPress yönetim paneli → Eklentiler → Yeni Ekle
- "WP Mail SMTP" arayın, yükleyin ve etkinleştirin
- Ayarlar → WP Mail SMTP menüsüne gidin
- Mail göndericisi: "Sitenin Adı" yazın
- "Başka SMTP" seçin (veya Brevo/SendGrid/Mailgun seçeneğini kullanın)
- Sağlayıcıdan API key'i alın (hesabınızda) ve eklentiye yapıştırın
- Sağlayıcı bilgilerini girin ve kaydedin
- "Test E-postası Gönder" tuşuna tıklayın
Brevo ve SendGrid ücretsiz tier'lerde ayda 300–1000 arası e-postayla başlarsınız — çoğu küçük ve orta site için yeterlidir.
Dikkat: Eklentiyi kurmak tek başına yeterli değil — gönderici domeniz için SPF ve DKIM kayıtları da gereklidir.
Gönderici Domeniz İçin SPF ve DKIM Ayarlaması
Brevo veya SendGrid'den e-posta gönderdikten sonra, Gmail ve Outlook gibi sağlayıcılar kimin gönderiş yapıyor olduğunu doğrulamak için SPF ve DKIM kayıtlarını kontrol ederler.
SPF (Sender Policy Framework) Kaydı:
DNS sağlayıcınızda (Hostinger, GoDaddy, Cloudflare, vb.) TXT kaydı oluşturun:
v=spf1 include:sendgrid.net ~all(SendGrid için) veya:
v=spf1 include:brevo.net ~all(Brevo için)
DKIM (DomainKeys Identified Mail) Kaydı:
SendGrid/Brevo panelinden DKIM imza kaydını alın ve DNS'e CNAME veya TXT kaydı olarak ekleyin. SendGrid genelde default._domainkey.example.com formatında bir CNAME sağlar.
DNS değişiklikleri 1–24 saat içinde yayılır. Doğrulama tamamlandıktan sonra WP Mail SMTP'de "Test E-postası Gönder" tuşuna tıklayın — artık Inbox'a gitmesi gerekir.
Türkiye'de İYS Uyumluluğu
Türkiye'de ticari e-posta gönderirken İYS (İleti Yönetim Sistemi) uyumluluğu zorunludur. İletişim formu üzerinden gelen müşteri mesajlarına otomatik yanıt gönderirseniz, bu yanıtların İYS'de kayıtlı olması ve alıcının izni bulunması gerekebilir.
Pratik rehber:
- Müşteri gönderdiği form mesajına yalnızca sistem onayı (bilişim amaçlı) gönderin — bu genelde İYS kapsamı dışındadır.
- Müşteri e-postasını onayı sormadan spam listesine eklemek veya ticari reklam mail göndermek KVKK ihlalidir.
- Contact Form 7'ye "Rıza Onay Kutusu" (checkbox) ekleyin: "Bana e-bülten ve pazarlama e-postaları göndermek için izin veriyorum" — bunu almak KVKK ve İYS uyumluluğu sağlar.
Contact Form 7 e-postaları neden spam klasörüne düşüyor?
wp_mail() sunucu IP'sinden gönderme yapıyor ve o IP, domain SPF/DKIM kayıtlarıyla hizalı değil. Çözüm: WP Mail SMTP eklentisini yükleyin, Brevo veya SendGrid gibi harici SMTP sağlayıcısı seçin ve SPF/DKIM kayıtlarını DNS'ye ekleyin.