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:
ve:
İ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:
Ekranda ne olduğunu not edin.
Örneğin:
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:
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:
yerine yanlışlıkla:
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:
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:
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:
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:
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:
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:
veya:
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:
yazdı diye e-postayı:
olarak sunucunuzdan göndermek SPF ve DMARC açısından sorun oluşturabilir.
Daha sağlıklı yapı çoğu durumda:
ş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:
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:
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:
kontrol edilebilir.
18. CAPTCHA başarısız oluyor olabilir
Formda:
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:
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:
farklı sorunlara işaret eder.
21. 500 hatası varsa mail ayarından önce backend'i düzeltin
Form POST isteği:
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:
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ı
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.
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:
Kod:
Form gönderilemiyorve:
Kod:
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:
Kod:
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:
Kod:
Form kaydı var
E-posta yokise 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:
Kod:
info@site.comyerine yanlışlıkla:
Kod:
info@eski-site.comkalabilir.
Ö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:
Kod:
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:
Kod:
SMTP sunucusu
Port
Kullanıcı adı
Parola
Şifreleme türü
Gönderen adresiBu 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:
Kod:
465
587gibi 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:
Kod:
SMTP hesabı:
info@site.com
From:
rastgele@gmail.comE-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:
Kod:
Authentication failedveya:
Kod:
Connection timed outiki 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:
Kod:
musteri@gmail.comyazdı diye e-postayı:
Kod:
From: musteri@gmail.comolarak sunucunuzdan göndermek SPF ve DMARC açısından sorun oluşturabilir.
Daha sağlıklı yapı çoğu durumda:
Kod:
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:
Kod:
Site:
site.com
From:
form@site.comHarici 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:
Kod:
Uncaught JavaScript errornedeniyle 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:
Kod:
200
400
403
422
500farklı sorunlara işaret eder.
21. 500 hatası varsa mail ayarından önce backend'i düzeltin
Form POST isteği:
Kod:
500 Internal Server Errordö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.
