Şu senaryo sizi yakından ilgilendiriyor: WooCommerce mağazanızda yeni sipariş geldiğinde, otomatik onay e-postası gönderiliyor. Ama müşteri bu e-postayı hiç görmüyor. Spam klasörüne düştüğünü, veya hiçbir yere varmadığını sonra öğreniyorsunuz. Bunun nedeni çoğunlukla wp_mail() fonksiyonunun SPF/DKIM doğrulaması olmadan maillları göndermesidir. Bu yazıda sorunu tanımlıyor ve adım adım çözüm sunuyoruz.
WooCommerce'de Varsayılan E-posta Gönderimi Neden Çalışmıyor?
WooCommerce, WordPress üzerine kurulu e-ticaret platformudur ve siparişler, faturalar, müşteri değişiklikleri gibi önemli bildirimler e-posta yoluyla gönderilir. Varsayılan kurulumda, WordPress wp_mail() fonksiyonunu çağırır — bu da web sunucusunun yerleşik PHP mail() kütüphanesini kullanır.
PHP mail() sonucunda gönderilen e-postalar şu sorunlarla karşılaşır:
- SPF (Sender Policy Framework) yok: Alıcı sunucu (Gmail, Outlook, Yandex), göndereni doğrulamaz ve e-postayı meşru olmayan kaynaktan gelmiş gibi görür.
- DKIM (DomainKeys Identified Mail) imzası yok: E-postanın imzalanmış veya güncellenmiş olmadığı anlaşılır; güven azalır.
- Domain alignment yok: Gönderen adresi (From:) mağazanın domain'i ama gönderi altyapısı hostin default değeri — bu uyumsuzluk alıcı filtreleri tarafından spam işareti olur.
- IP itibar sorunu: Paylaşılan hosting IP adresleri genellikle spam için kötü reputasyona sahiptir; e-postanız bu IP'den gelirse kabul şansı düşer.
wp_mail() Fonksiyonunun Sınırlamaları
WordPress'in wp_mail() fonksiyonu basit bir abstraksiyon katmanıdır. Çekirdek işi PHP'nin mail() işlevine bırakır ve bu işlev:
- SMTP sunucusuna bağlanmadan, yerel dosya sistemi üzerinden mail sırası oluşturur
- Sendmail veya postfix kütüphanesine iletir — konfigürasyon genellikle hosting tarafında
- SPF/DKIM imza ekleme yeteneği yoktur — yalnızca tekil başlık gönderebilir
- Sunucu IP adresi değişirse veya host e-postaları çok gönderirse, IP reputation bozulur
Sonuç: siparişler, faturalar, haber bültenleri Gmail'in Promotion veya Spam klasörüne düşer. Müşteri hiçbir işlem bilgisine erişemez, para ödediği malın ne zaman gelecek bileceğinden emin olmaz. Bu da başarısız siparişler, müşteri şikayetleri ve mağaza itibarının azalmasına yol açar.
SPF, DKIM ve Domain Alignment Nedir?
SPF (Sender Policy Framework): Bir domain için hangi IP adreslerinin mail göndermesine izin verdiğini tanımlayan DNS kaydı. Gmail, Outlook vb. bu kaydı kontrol eder. Kaydınız SPF include SendGrid örneğinde olduğu gibi yapılandırılırsa, "SendGrid'in IP'leri bizim adımıza mail gönderebilir" demek olur.
DKIM (DomainKeys Identified Mail): E-postanın gövde ve başlıklarını özel bir anahtarla imzalayan mekanizma. Alıcı domain'in açık anahtarını kontrol ederek e-postanın değiştirilmediğini ve gerçekten o domain'den geldiğini doğrular.
Domain Alignment: "From:" adresi (mağaza domain'i) ile gerçek gönderici altyapısının domain'inin birbiriyle uyumlu olması. Eğer siz "ornek@magaza.com.tr"den gönderiyorsunuz ama altyapı "mail123.hosting.com"dan çıkıyorsa, filtreleme alarm çalışır ve e-posta spam olur.
Related Digital, Setrow, Euromsg gibi birçok ESP, sizin custom domain'inizi tutan DKIM ve SPF kayıtlarını kendi altyapılarına bağlamayı destekler. Sonuç: e-postalar fiziksel olarak ESP'nin sunucularından çıksa da, domain'inizin onayı ile gider ve alıcı filtreleri bu e-postayı meşru kaynaktan gelmiş olarak görmek.
SMTP Eklenti Kurulumu Adım Adım
WooCommerce ile kullanılabilecek en popüler SMTP eklentileri WP Mail SMTP, SendGrid, Mailgun ve Brevo (eski Sendinblue) eklentileridir. Burada WP Mail SMTPörneğini kullanacağız çünkü çoğu SMTP sağlayıcısına destek verir ve Türkçe lokalizasyonu vardır.
- Eklentiyi yükleyin: WordPress yönetim panelinde Eklentiler → Yeni Ekle'ye tıklayın. "WP Mail SMTP" ile arayın, WP Mail SMTP (by WPForms) seçin ve Yükle + Etkinleştir'e tıklayın.
- Ayarları açın: WordPress yönetim panelinde WP Mail SMTP → Ayarlar menüsüne girin.
- Mail Gönderimi seçin: "Mail" bölümünde,
From EmailveFrom Namedeğerlerini girin. Örnek: From Email = "info@magaza.com.tr", From Name = "Benim Mağazam". - SMTP Sağlayıcısı Seç: "SMTP Sağlayıcısı" açılır listesinde sağlayıcı seçin (SendGrid, Mailgun, Custom, vb.). Türkiye'de faaliyet gösteren Setrow, Related Digital veya Euromsg kullanıyorsanız "Custom SMTP" seçin.
- Host, Port, Kullanıcı Adı, Şifre girin: Sağlayıcının belgelerine bakarak bu bilgileri girin. Örnek: Host smtp.sendgrid.net, Port 587, Username apikey.
- Encryption seçin: TLS (port 587) veya SSL (port 465) kullanın. Modern sağlayıcılar TLS önerirler.
- Kaydet ve Test Et: "Ayarları Kaydet" butonuna tıklayın. Ardından "Test E-posta Gönder" linkini kullanarak test e-postası gönderin. Admin e-postanız veya test adresi gelmişse başarılı.
Harici Email Sağlayıcısı Seçimi ve DNS Ayarları
SMTP eklentisini ayarladıktan sonra, seçtiğiniz sağlayıcı (SendGrid, Mailgun, Related Digital, Setrow, vb.) için DNS kaydı düzeltmeleri gerekir. Çoğu sağlayıcı şu bilgileri sunar:
- SPF Kaydı: DNS TXT kaydı olarak ekleyin. Sağlayıcı size SPF include kaydını verecektir.
- DKIM Kayıtları: Sağlayıcı size DKIM public key'ini verir; bunu DNS'te TXT kaydı olarak işaret ettiği yere yazarsınız. CNAME veya TXT olabilir.
- Verificiation / Doğrulama: Bazı sağlayıcılar e-mail doğrulaması isteyebilir. Örneğin admin e-postanız bir onay kodu veya link alabilir.
Adım Adım DNS ayarı:
- Domain yöneticisi (Namecheap, Cloudflare, Hetzner, vb.) paneline girin
- DNS / MX Records bölümüne gidin
- Yeni TXT kaydı ekleyin: Subdomain (örn. default veya boş bırakın), Tip: TXT, Değer: sağlayıcının verdiği SPF kaydını yapıştırın
- DKIM kaydını sağlayıcı talimatlarına göre ekleyin (genellikle farklı subdomain)
- Kaydet ve 10–30 dakika bekleyin (DNS propagation)
Doğrulama ve Canlı Test
DNS kaydlarını ekledikten sonra, her şeyin doğru çalışıp çalışmadığını kontrol etmek önemlidir.
- WP Mail SMTP test fonksiyonunu kullanan: Eklenti ayarlarında "Test E-posta Gönder" linkini tıklayıp, kendi e-postanıza bir deneme mesajı gönderin.
- Alınan e-postayı kontrol edin: Gmail, Outlook, Yandex'te e-postayı açın. Başlıkları göster seçeneğini kullanarak SPF/DKIM sonuçlarını gözlemleyin. SPF: PASS ve DKIM: PASS görmek istiyorsunuz.
- Ücretsiz Inbox Placement Testiyi kullanın: check.live-direct-marketing.online adresine gidin, test e-postasını 20+ popüler sağlayıcıya (Gmail, Outlook, Yandex, Yahoo, Mynet, Türk Telekom, vb.) gönderin ve hangi klasörlere düştüğünü, SPF/DKIM/DMARC sonuçlarını ve render görünüşünü kontrol edin. Ücretsiz ve kayıt gerektirmez.
- Gerçek siparişle test edin: Mağaza hesabınızda deneme siparişi oluşturup otomatik onay e-postasının gelip gelmediğini, spam klasörüne düşüp düşmediğini kontrol edin.
Türkiye'ye Özgü Uyarılar: İYS ve KVKK
Türkiye'de ticari e-posta kampanyaları göndererseniz, yasal uygunluğu gözardı etmemelisiniz. KVKK (Kişisel Verilerin Korunması Kanunu) ve İYS (İleti Yönetim Sistemi) kural koyucu mekanizmalar.
- İYS Kayıdı: E-posta, SMS veya diğer ticari ileti göndermeden önce alıcı kişinin açık rızasını (kontrol, tik, seçim) almanız ve bunu İYS'te kaydetmeniz gerekir.
- Kabul Listesi Sürümlendirmesi: Her e-posta göndermeden, alıcıyı İYS'te kontrol edin. Kişi onayını geri çekerse, derhal gönderiyi durdurun.
- Unsubscribe Linki: Her ticari e-postada çalışan unsubscribe / İletiden Çık linki bulunmalı.
İyi haber: WooCommerce'nin varsayılan newsletter eklentileri ve e-ticaret eklentileri İYS entegrasyonu sunan sürümler mevcut. Hangisinin İYS-uyumlu olduğunu kontrol edin ve teyit etmeyi unutmayın.
Gmail, Hotmail ve Yandex'ten sipariş onay e-postası gelmiyor, ama sunucu loglarında göndersene yazıyor. Ne yapmalı?
- WP Mail SMTP eklentisini yükle ve SMTP sağlayıcısını ayarla
- DNS'te SPF ve DKIM kayıtlarını ekle (sağlayıcının talimatlarına göre)
- Test e-postasını gönder ve alıcı tarafında başlıkları kontrol et
- Ücretsiz inbox placement test'i kullan
Hangi SMTP sağlayıcısını seçmeliyim, SendGrid mi Mailgun mu?
Mailgun: Benzer fiyatlandırma ve özellikler, API dokümantasyonu detaylı.
Türkiye tabanlı çözümler: Related Digital, Setrow, Euromsg Türkçe destek sunuyor ve İYS entegrasyonu daha iyi olabilir.
Başlangıç için SendGrid veya Mailgun ücretsiziyle başla, arttıkça Related Digital veya Setrow'a geç.