Web sitesindeki iletişim formu ekranda başarıyla gönderilmiş görünmesine rağmen e-posta ulaşmıyorsa sorun yalnızca form tasarımında olmayabilir. PHP mail yapılandırması, SMTP, yanlış alıcı adresi, DNS kayıtları, spam filtreleri veya formun sunucu tarafında hiç kaydedilmemesi aynı sonuca yol açabilir.
Bu rehberde iletişim formu çalışmadığında önce formun gerçekten gönderilip gönderilmediğini, ardından e-posta teslimat zincirinin hangi aşamada koptuğunu adım adım kontrol edeceğiz.
Önce iki problemi birbirinden ayırın
Şunlar aynı şey değildir:
Form gönderilemiyor
ve:
Form gönderiliyor ancak e-posta gelmiyor
İlk durumda uygulama veya form tarafında hata olabilir.
İkinci durumda mesaj sunucuda oluşmuş fakat e-posta teslimatı başarısız olmuş olabilir.
1. Formu kendiniz test edin
Gerçek kullanıcı gibi:
- Ad alanını doldurun
- E-posta girin
- Telefon girin
- Mesaj yazın
- Gönder butonuna basın
Ekranda ne olduğunu not edin.
Örneğin:
Mesajınız başarıyla gönderildi.
görünmesi tek başına e-postanın gerçekten gönderildiğini kanıtlamaz.
2. Form kaydı veritabanına yazılıyor mu?
Sistem form mesajlarını veritabanında veya yönetim panelinde saklıyorsa kontrol edin.
Örneğin:
Form kaydı var
E-posta yok
ise form çalışıyor ancak mail teslimatında problem var demektir.
Hiç kayıt oluşmuyorsa önce formun backend işlemini kontrol edin.
3. Alıcı e-posta adresi doğru mu?
Form ayarlarında:
info@site.com
yerine yanlışlıkla:
info@eski-site.com
kalabilir.
Özellikle tema veya proje kopyalandıysa eski müşteriye ait alıcı adresi bulunabilir.
4. Spam klasörünü kontrol edin
E-posta gerçekten gönderilmiş ancak:
- Spam
- Gereksiz
- Tanıtımlar
klasörüne düşmüş olabilir.
İlk testte yalnız gelen kutusuna bakmayın.
5. PHP mail kullanıyorsanız sunucu desteğini kontrol edin
Bazı hostinglerde PHP:
mail()
fonksiyonu sınırlanmış veya tamamen kapatılmış olabilir.
Uygulama mail gönderdiğini varsayarken sunucu teslimatı gerçekleştirmeyebilir.
Bu durumda hosting sağlayıcısının mail politikasını kontrol edin.
6. SMTP kullanmak daha sağlıklı olabilir
SMTP ile gönderimde site belirli bir posta sunucusunda kimlik doğrulaması yapar.
Tipik olarak şu bilgiler gerekir:
SMTP sunucusu
Port
Kullanıcı adı
Parola
Şifreleme türü
Gönderen adresi
Bu değerlerden biri yanlışsa bağlantı başarısız olabilir.
7. SMTP portunu kontrol edin
Yaygın SMTP kurulumlarında kullanılan portlar sağlayıcıya göre değişebilir.
Örneğin:
465
587
gibi portlar görülebilir.
Ancak doğru port ve şifreleme türünü kullandığınız e-posta sağlayıcısının dokümantasyonundan alın.
8. SMTP kullanıcı adı ve gönderen adresini karşılaştırın
Şöyle bir yapı bazı servislerde sorun oluşturabilir:
SMTP hesabı:
info@site.com
From:
rastgele@gmail.com
E-posta sağlayıcısının izin verdiği gönderen adreslerini kullanın.
9. Gmail kullanıyorsanız normal hesap parolası her zaman uygun olmayabilir
Google hesabının güvenlik yapılandırmasına göre uygulama parolası veya OAuth tabanlı bağlantı gerekebilir.
Kullanıcının normal Google hesabı parolasını site koduna kaydetmek iyi bir yöntem değildir.
10. SMTP hatasını loglayın
Mail gönderme kütüphanesi hata döndürüyorsa bunu kaydedin.
Örneğin:
Authentication failed
veya:
Connection timed out
iki farklı problemdir.
Birincisi kimlik bilgilerine, ikincisi bağlantı veya porta işaret edebilir.
11. Form gönderen kişinin e-postasını doğrudan From yapmayın
Kullanıcı forma:
musteri@gmail.com
yazdı diye e-postayı:
From: musteri@gmail.com
olarak sunucunuzdan göndermek SPF ve DMARC açısından sorun oluşturabilir.
Daha sağlıklı yapı çoğu durumda:
From: form@site.com
Reply-To: musteri@gmail.com
şeklinde kurulabilir.
12. SPF kaydını kontrol edin
Domain adına hangi sunucuların e-posta göndermeye yetkili olduğunu SPF kaydı belirtmeye yardımcı olur.
Yanlış veya eksik SPF:
- Spam riskini artırabilir
- Teslimatı etkileyebilir
- Alıcı sunucuda reddedilmeye yol açabilir
13. DKIM kaydını kontrol edin
DKIM, gönderilen e-postaların alan adı adına kriptografik olarak imzalanmasına yardımcı olur.
SMTP sağlayıcınız DKIM kaydı veriyorsa DNS’e doğru eklenip eklenmediğini kontrol edin.
14. DMARC politikasını kontrol edin
Çok katı DMARC yapılandırması ve yanlış SPF/DKIM kombinasyonu teslimat problemlerine yol açabilir.
DNS değişikliği yaptıktan sonra e-posta sorunları başladıysa MX ve TXT kayıtlarının korunup korunmadığını da kontrol edin.
DNS Değişikliği Ne Kadar Sürer? DNS Yayılımı Nasıl Kontrol Edilir? rehberindeki DNS kontrolleri bu noktada yardımcı olabilir.
15. MX kaydının doğru olduğunu doğrulayın
Web sitesi başka hostinge taşındığında yalnız A kaydı değiştirilecekken yanlışlıkla MX kayıtları da silinebilir.
Bu durumda form e-postası değil, domainin genel mail sistemi de etkilenebilir.
16. Gönderen domain ile site domainini kontrol edin
Şu yapı daha kolay yönetilebilir:
Site:
site.com
From:
form@site.com
Harici bir domain kullanılıyorsa hangi servis üzerinden gönderim yapıldığını açık şekilde yapılandırın.
17. Form validasyonu sunucuda da yapılmalı
Tarayıcıdaki JavaScript doğrulaması tek başına yeterli değildir.
Sunucu tarafında da:
- E-posta formatı
- Zorunlu alanlar
- Mesaj uzunluğu
- Telefon
kontrol edilebilir.
18. CAPTCHA başarısız oluyor olabilir
Formda:
- reCAPTCHA
- hCaptcha
- Turnstile
kullanılıyorsa doğrulama backend tarafında başarısız olabilir.
Kullanıcı başarı mesajı görürken formun gerçekte reddedildiği hatalı uygulamalar da olabilir.
Log kaydını kontrol edin.
19. JavaScript hatası formu engelliyor olabilir
Form AJAX ile gönderiliyorsa tarayıcı Console bölümünü kontrol edin.
Örneğin:
Uncaught JavaScript error
nedeniyle gönderim kodu hiç çalışmıyor olabilir.
20. Network isteğini kontrol edin
Tarayıcı geliştirici araçlarında:
Network
sekmesini açın.
Formu gönderin.
İlgili isteğin durum koduna bakın.
Örneğin:
200
400
403
422
500
farklı sorunlara işaret eder.
21. 500 hatası varsa mail ayarından önce backend’i düzeltin
Form POST isteği:
500 Internal Server Error
döndürüyorsa form işlemi sunucuda çöküyor olabilir.
Bu durumda 500 Internal Server Error rehberindeki PHP ve log kontrollerini uygulayın.
22. Form mobilde de test edilmelidir
Masaüstünde çalışan form mobilde:
- Butonun görünmemesi
- Klavye problemi
- Popup tarafından kapatılması
- Yanlış input tipi
nedeniyle kullanılamayabilir.
23. Form gönderimini yayına alma kontrolüne dahil edin
Yeni siteyi yalnız tasarım üzerinden onaylamayın.
Gerçek test formu gönderilmeden site tamamlanmış sayılmamalıdır.
Yeni Web Sitesi Yayına Açılmadan Önce 25 Maddelik Kontrol Listesi içerisinde diğer canlıya çıkış kontrollerini de bulabilirsiniz.
İletişim formu hızlı kontrol sırası
- Form gerçekten submit oluyor mu?
- Veritabanı kaydı oluşuyor mu?
- Alıcı adresi doğru mu?
- Spam klasörü kontrol edildi mi?
- SMTP bağlantısı başarılı mı?
- Port doğru mu?
- Kimlik bilgileri doğru mu?
- From ve Reply-To doğru mu?
- SPF doğru mu?
- DKIM doğru mu?
- MX kayıtları doğru mu?
- CAPTCHA çalışıyor mu?
- Network isteği hangi kodu döndürüyor?
Sonuç
İletişim formu problemi şu zincirde teşhis edilmelidir:
Tarayıcı → form backend’i → mail kütüphanesi → SMTP sunucusu → DNS doğrulaması → alıcı sunucu
Formun başarı mesajı göstermesi, e-postanın teslim edildiğini kanıtlamaz.
Her katmanı ayrı ayrı kontrol ettiğinizde problemin form kodunda mı, SMTP’de mi yoksa e-posta altyapısında mı olduğunu çok daha hızlı belirleyebilirsiniz.