Bu hata neden oluşur?
Nedenler, sahada karşılaştığımız sıklığa göre sıralıdır.
- 01
PHP mail() fonksiyonu sunucuda engelli ya da güvenilmez
Çok sıkWordPress ve WooCommerce, e-posta göndermek için varsayılan olarak sunucunun PHP mail() fonksiyonunu kullanır. Paylaşımlı hosting ortamlarında bu fonksiyon çoğu zaman kimlik doğrulaması yapmaz; alıcı sunucular kimliği belirsiz gönderimi reddeder ya da doğrudan çöp kutusuna atar.
- 02
WooCommerce e-posta ayarında ilgili bildirim kapalı
SıkSipariş durumu değiştiğinde tetiklenmesi gereken e-posta (yeni sipariş, işleme alındı, tamamlandı) ayarlar sayfasında devre dışı bırakılmış olabilir. Güncelleme sonrası ayarların sıfırlanması da bu duruma yol açabilir.
- 03
SMTP kimlik doğrulaması kurulu değil
SıkSite, e-posta göndermek için kendi alan adınıza ait bir SMTP sunucusu üzerinden değil, sunucunun genel mail() fonksiyonu üzerinden gönderim yapıyorsa teslim oranı düşük kalır.
- 04
E-postalar spam ya da junk klasörüne düşüyor
Ara sıraE-posta gönderiliyor ama SPF, DKIM ya da DMARC kayıtları (alan adının sahte gönderimi engelleyen DNS kayıtları) eksik olduğu için alıcı sunucu tarafından spam sayılıyor olabilir.
- 05
Action Scheduler kuyruğu tıkanmış
Ara sıraWooCommerce, bazı e-postaları arka planda çalışan bir görev kuyruğu (Action Scheduler) üzerinden gönderir. Kuyrukta biriken görevler varsa e-posta gecikmeli gider ya da hiç gitmez.
- 06
Bir eklenti e-posta kancasını (hook) engelliyor
NadirenÖnbellekleme, güvenlik ya da özel form eklentileri bazen wp_mail() işlevine müdahale ederek gönderimi sessizce durdurabilir.
Adım adım çözüm
Ayar ya da dosya değiştirmeden önce mutlaka veritabanı ve wp-content yedeği alın; özelleştirilmiş e-posta şablonlarınız varsa kayıp yaşamamak için bu adım önemlidir.
- 1
WooCommerce e-posta ayarını kontrol edin
WooCommerce › Ayarlar › E-postalar sayfasında "Yeni sipariş", "İşleme alındı" ve "Tamamlandı" e-postalarının etkin olduğunu doğrulayın. Ayrıca sayfanın üstündeki "Gönderen e-posta adresi" alanının geçerli ve alan adınıza ait olduğuna bakın. Aynı bilgiyi komut satırından da kontrol edebilirsiniz.
bashwp option get woocommerce_new_order_settings --format=json - 2
wp_mail() fonksiyonunu test edin
Sorunun WordPress'ten mi yoksa sunucudan mı kaynaklandığını anlamak için basit bir test e-postası gönderin. Komut çalıştıktan sonra bool(true) dönerse WordPress e-postayı sunucuya iletmiştir; sorun muhtemelen sunucu tarafındadır ya da alıcı tarafta spam filtresindedir.
bashwp eval 'var_dump( wp_mail( "test@ornekalanadi.com", "Test E-postasi", "Bu bir test mesajidir." ) );' - 3
Hata kaydını açın
wp-config.php dosyasında, "That's all, stop editing!" satırının üstüne aşağıdaki satırları ekleyin. Bu, e-posta gönderiminde oluşan PHP hatalarını ekrana değil dosyaya yazar; site ziyaretçilerini etkilemez.
phpdefine( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); - 4
SMTP ile kimlik doğrulamalı gönderim kurun
PHP mail() yerine kendi alan adınıza ait bir e-posta hesabı ya da kurumsal e-posta servisi üzerinden SMTP kimlik doğrulaması yapan bir yapı kurun. Kullanacağınız SMTP eklentisinin adı, sunucu adresi ve port bilgisi barındırma sağlayıcınıza göre değişir; bu bilgileri hosting panelinizden ya da e-posta sağlayıcınızdan doğrulayın. Kurulum sonrası test e-postası göndererek doğrulayın.
- 5
Sipariş durumu tetikleyicilerini gözden geçirin
Her WooCommerce e-postası belirli bir sipariş durumu değişimine bağlıdır. Örneğin "İşleme alındı" e-postası, sipariş bu duruma geçtiğinde tetiklenir. Özel ödeme eklentisi ya da manuel durum değişikliği bu tetikleyiciyi atlıyorsa e-posta hiç gönderilmez. WooCommerce › Ayarlar › E-postalar altında ilgili e-postanın tetikleyici durumunu kontrol edin.
- 6
Action Scheduler kuyruğunu kontrol edin
WooCommerce › Durum › Zamanlanmış Eylemler sayfasında bekleyen (pending) veya başarısız (failed) e-posta görevi olup olmadığına bakın. Biriken görev varsa kuyruk tıkanmış olabilir. Kuyruğu elle tetikleyen komut, WooCommerce sürümüne göre değişebilir; komutu çalıştırmadan önce güncel Action Scheduler belgelerini kontrol edin.
- 7
SPF ve DKIM kayıtlarını doğrulayın
Gönderen alan adınızın DNS ayarlarında SPF ve DKIM kayıtlarının doğru tanımlı olduğunu kontrol edin. Bu kayıtlar, e-postanızın sahte gönderim olarak işaretlenmesini engeller. Terminalden hızlı bir kontrol yapabilirsiniz.
bashdig TXT ornekalanadi.com +short
Hangi sürümlerde görülüyor?
| WordPress | PHP | Durum | Not |
|---|---|---|---|
| WooCommerce 8.x | PHP 8.1 | Görülüyor | PHP mail() ile gönderimde en sık görülen sürüm kombinasyonu |
| WooCommerce 7.x | PHP 7.4 | Görülüyor | Barındırma ortamına göre e-posta engelleme davranışı değişebilir. |
Çözüldüğünü nasıl anlarsınız?
- Test siparişi verildiğinde hem müşteri hem yönetici e-postası gelen kutusuna ulaşıyor.
- WooCommerce › Durum › Günlükler bölümünde e-posta gönderim hatası görünmüyor.
- E-postalar spam ya da gereksiz klasörüne değil doğrudan gelen kutusuna düşüyor.
- Zamanlanmış Eylemler listesinde bekleyen ya da başarısız e-posta görevi kalmıyor.
Ne zaman uzmana başvurmalı?
Test e-postası gidiyor ama sipariş e-postaları hâlâ gelmiyorsa ya da SMTP kurulumuna rağmen teslim oranı düşükse sorun genellikle sunucu yapılandırması, DNS kayıtları ya da eklenti çakışmasında saklıdır. Bu noktada günlükleri tek tek okumak zaman alır. Hata Ayıklama ve Onarım hizmetimizde e-posta gönderim zincirini uçtan uca inceliyor, SMTP ve DNS yapılandırmasını sizin adınıza test ediyoruz. Siparişleriniz şu an müşteriye ulaşmıyorsa ve satış kaybediyorsanız Acil Müdahale ile aynı gün bakıyoruz.
Bu hatayı ₺2.500'e 2 saatte çözelim.
Sabit fiyat, kopya sitede çalışma, yazılı çözüm notu. Aynı hata 7 gün içinde tekrar ederse ücretsiz.
Sık sorulanlar
Test e-postası gidiyor ama sipariş e-postaları gelmiyor, neden?
Bu durum genellikle sipariş durumu tetikleyicisinin devre dışı kaldığını gösterir. WooCommerce e-posta ayarlarında ilgili bildirimin açık olduğunu ve sipariş durumunun doğru geçiş yaptığını kontrol edin.
SMTP kurunca sorun tamamen çözülür mü?
SMTP, gönderim güvenilirliğini büyük ölçüde artırır ama tek başına garanti değildir. SPF, DKIM kayıtları eksikse ya da WooCommerce ayarında bildirim kapalıysa e-posta yine gitmeyebilir.
Hangi sipariş durumunda hangi e-posta gider?
Yeni sipariş oluşturulduğunda mağaza sahibine, sipariş "işleme alındı" ya da "tamamlandı" durumuna geçtiğinde müşteriye e-posta gider. Her bildirimin tetikleyici durumu WooCommerce › Ayarlar › E-postalar sayfasında ayrı ayrı görünür.
E-postalar spam'e düşüyor, ne yapmalıyım?
Öncelikle alan adınızın SPF ve DKIM kayıtlarını doğrulayın. Ardından gönderen adresinin gerçek ve alan adınıza ait bir kutu olduğundan emin olun; genel bir adresten (ör. no-reply@hosting.com) gönderim spam riskini artırır.
Action Scheduler kuyruğu ne işe yarar, neden önemli?
WooCommerce bazı e-postaları anında değil, arka planda çalışan bir görev listesi üzerinden gönderir. Bu liste tıkanırsa e-posta gecikir ya da hiç gitmez; düzenli olarak bekleyen görev sayısını kontrol etmek gecikmeleri önler.