WordPress wp_mail() fonksiyonu mesajı oluşturur ve sunucudaki posta altyapısına teslim eder; başarılı dönmesi alıcının mesajı aldığı anlamına gelmez. Form, şifre sıfırlama ve WooCommerce e-postalarında uygulama, SMTP, DNS kimlik doğrulaması ve teslimat logları ayrı incelenmelidir.
wp_mail returned true but message not received
SMTP Error: Could not authenticate
Connection timed out on port 587
550 SPF/DKIM validation failed
Sorun üç katmandan birinde olur: WordPress mesajı üretmez, SMTP/MTA mesajı kabul etmez veya uzak alıcı mesajı reddeder/spam’e taşır. Her katman farklı log ve test gerektirir.
Contact Form 7 veya WooCommerce ‘gönderildi’ mesajı gösterebilir ancak bu teslimat garantisi değildir. wp_mail_failed hook, SMTP logu ve sunucu mail logu birlikte incelenmelidir.
From adresi site domainiyle uyumlu olmalı; rastgele Gmail adresini From olarak kullanmak SPF/DMARC hizalamasını bozabilir. Ziyaretçi adresi Reply-To alanında kullanılmalıdır.
Port 25 veri merkezi tarafından engellenmiş olabilir; authenticated SMTP için çoğunlukla 587 STARTTLS veya 465 TLS kullanılır. Sağlayıcının doğru host, port ve encryption değerleri esas alınmalıdır.
SPF, DKIM, DMARC ve PTR/rDNS teslimat güvenilirliğini belirler. DNS kayıtları doğru olsa bile gönderici IP kara listede veya domain itibarı düşük olabilir.
SMTP parolasını wp-config.php veya eklenti veritabanında düz metin saklamak yerine mümkünse environment/secret yöntemi ve sınırlı yetkili uygulama parolası kullanın.
E-postada, tarayıcıda veya SSH günlüğünde gördüğünüz ifadeyi aratın. Her kartta anlam, muhtemel neden ve güvenli ilk işlem bulunur.
Anlamı: WordPress/PHPMailer mesajı gönderim katmanına teslim edememiştir.
Muhtemel neden: Geçersiz adres, hook hatası veya mailer problemi.
Anlamı: Yerel mailer mesajı kabul etmiş ancak teslimat doğrulanmamıştır.
Muhtemel neden: Spam, uzak red, DNS kimliği veya queue.
Anlamı: SMTP sunucusu kullanıcı/parolayı kabul etmemiştir.
Muhtemel neden: Yanlış kimlik bilgisi, 2FA veya uygulama parolası.
Anlamı: WordPress SMTP host/porta bağlanamamıştır.
Muhtemel neden: Firewall, yanlış port, DNS veya servis erişimi.
Anlamı: Hedef port bağlantıyı aktif olarak reddetmiştir.
Muhtemel neden: Yanlış port veya SMTP servisi kapalı.
Anlamı: Uzak sunucu kimlik doğrulamasını başarısız bulmuştur.
Muhtemel neden: Eksik/yanlış DNS kayıtları veya From hizasızlığı.
Anlamı: Alıcı adresi mevcut değildir veya reddedilmiştir.
Muhtemel neden: Yazım hatası, silinmiş mailbox.
Anlamı: Sipariş e-posta olayı tetiklenmemiş veya queue’da kalmıştır.
Muhtemel neden: Action Scheduler, template veya SMTP.
Bu ifadeyle eşleşen kayıt bulunamadı.
Komutlar root erişimi içindir. Önce yalnızca durum ve log toplayın; nedeni görmeden kalıcı ayar değiştirmeyin.
wp eval 'var_dump(wp_mail("[email protected]","WordPress test","Test mesajı"));'
wp_mail fonksiyonunun uygulama katmanındaki sonucunu gösterir.
dig +short TXT example.com
dig +short TXT default._domainkey.example.com
dig +short TXT _dmarc.example.com
SPF, DKIM ve DMARC kayıtlarını görüntüler.
timeout 10 openssl s_client -starttls smtp -connect smtp.example.com:587 -servername smtp.example.com </dev/null
Sunucudan SMTP bağlantısı ve TLS el sıkışmasını test eder.
tail -n 150 /var/log/maillog 2>/dev/null || tail -n 150 /var/log/mail.log 2>/dev/null
Yerel mail teslimat ve red kayıtlarını gösterir.
tail -n 150 /var/log/exim_mainlog 2>/dev/null
cPanel/Exim gönderim ve kuyruk kayıtlarını gösterir.
wp cron event list --fields=hook,next_run_relative | head -n 40
Gecikmiş e-posta işlerinin cron tarafını kontrol eder.
WordPress hatasının temel nedeni aynıdır ancak log yolları, PHP ayar ekranları ve servis yönetimi kullanılan barındırma altyapısına göre değişir.
cPanel’de Email Deliverability, Track Delivery ve Exim logları kullanılır.
grep -i 'ALICI@DOMAIN' /var/log/exim_mainlog | tailPlesk’te Mail Settings, Mail Log Browser ve DNS kayıtları kontrol edilir.
grep -i 'ALICI@DOMAIN' /var/log/maillog | tailPanelsiz sunucuda Postfix/Exim veya harici SMTP bağlantısı doğrudan izlenir.
postqueue -p 2>/dev/null || exim -bp 2>/dev/nullÖnce WordPress’in mesajı üretip üretmediğini, sonra SMTP/MTA kabulünü ve son olarak uzak teslimat ile DNS kimliğini doğrulayın.
Şifre sıfırlama, form, WooCommerce veya tüm wp_mail mesajları mı etkileniyor belirleyin.
Tek alıcıya test gönderip saat ve From adresini kaydedin.
Uygulama true dönse bile MTA veya SMTP cevabını görün.
587 STARTTLS ile 465 implicit TLS’i karıştırmayın.
From domain ile kimlik doğrulamasının hizalı olmasını sağlayın.
Spam, bounce ve sağlayıcı reputation kayıtlarını inceleyin.
Formun To/From/Reply-To alanlarını ve SMTP logunu kontrol edin.
admin_email, kullanıcı adresi, wp_mail ve spam klasörü incelenir.
Scheduled Actions, cron ve sipariş durumu tetikleri kontrol edilir.
wp cron event listUygulama parolası, 2FA ve kullanıcı adı biçimi doğrulanır.
SPF/DKIM/DMARC, PTR, IP reputation ve Gmail bounce mesajı incelenir.
Hayır. Yalnız WordPress’in mesajı mail katmanına başarıyla verdiğini gösterir; teslimat logla doğrulanmalıdır.
Sağlayıcıya göre çoğunlukla 587 STARTTLS veya 465 TLS kullanılır.
SPF/DMARC hizalaması ve teslimat güveni için gönderen domain ile uyumlu olmalıdır.
From yerine Reply-To alanında kullanılmalıdır.
Teslimat güvenilirliği ve sahteciliği önleme için güçlü biçimde önerilir.
Cron, Action Scheduler, sipariş durumu veya SMTP queue gecikmesi olabilir.
Doğru yapılandırılmış güvenilir bir servis genellikle teslimat ve loglama açısından avantaj sağlar.
cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim ve güvenlik katmanlarını birlikte analiz ederek yalnızca servisi kaldırmak yerine arızanın temel nedenini gideriyoruz.