जब संपर्क फ़ॉर्म “धन्यवाद” कहता है लेकिन मेल नहीं आता
संपर्क फ़ॉर्म बिना किसी को त्रुटि दिखाए खराब हो सकता है: आगंतुक को अच्छी पुष्टि मिलती है, आपको कुछ नहीं। ऐसा क्यों होता है और समय पर कैसे पहचानें।
छोटे फ़िज़ियोथेरेपी क्लिनिक की कल्पना करें। वेबसाइट पर संपर्क फ़ॉर्म है और वह काम करता है—कम से कम दिखता ऐसा है। आगंतुक भरते हैं, “भेजें” क्लिक करते हैं और “धन्यवाद, हम जल्द संपर्क करेंगे” देखते हैं। जो कोई नहीं देखता: संदेश कुछ समय पहले क्लिनिक के इनबॉक्स में पहुँचना बंद हो गए। न त्रुटि है, न किसी के इनबॉक्स में वापसी संदेश, न कहीं लाल चेतावनी। फ़ॉर्म चुपचाप विफल होता है।
किसी को पता क्यों नहीं चलता
फ़ॉर्म का “धन्यवाद” पृष्ठ सामान्यतः केवल एक बात बताता है: वेबसाइट ने संदेश आगे सौंप दिया। मेल सर्वर स्वीकारता, स्पैम में डालता या रास्ते में अस्वीकार करता है या नहीं, यह बाद में फ़ॉर्म की नज़र से बाहर होता है। उदाहरण के लिए PHP का mail() स्थानीय प्रणाली द्वारा वितरण के लिए संदेश स्वीकारते ही सफलता बताता है—किसी तक पहुँचने पर नहीं। इसलिए आगंतुक पुष्टि पाकर आगे बढ़ता है। मालिक खाली इनबॉक्स देखकर सोचता है कि महीना शांत है। कम पूछताछ अकेले शायद ही चिंता पैदा करती है: छुट्टियाँ, मौसम, अर्थव्यवस्था—“फ़ॉर्म खराब है” से अधिक संभव लगने वाला कारण हमेशा होता है।
- दिन 0रात में सामान्य प्लगइन अद्यतन होता है। साइट पहले जैसी ही दिखती है।
- दिन 1अंतिम संदेश आता है। किसी को नहीं पता कि वह अंतिम है।
- दिन 2–13आगंतुक फ़ॉर्म सबमिट करते और “धन्यवाद” देखते रहते हैं। इनबॉक्स में कुछ नहीं पहुँचता।
- दिन 14कोई थोड़ा नाराज़ होकर फ़ोन करता है और पूछता है कि उसकी पूछताछ का कभी उत्तर क्यों नहीं मिला।
- दिन 15एक घंटे में कारण मिल जाता है। उन दो सप्ताह के संदेश खो गए—जब तक फ़ॉर्म ने प्रति भी न रखी हो।
सामान्य कारण
- SMTP पासवर्ड या मेल प्रदाता बदल गया। फ़ॉर्म पुराने विवरण से लॉगिन करता रहता है और मेल सर्वर मना करता है—आगंतुक के लिए चुपचाप।
- प्रमाणीकरण के बिना PHP mail()। वेब सर्वर उचित मेल सर्वर में लॉगिन किए बिना सीधे मेल भेजता है। कई प्राप्तकर्ता सर्वर इसे संदिग्ध मानते हैं: स्पैम में जाता है या सीधे अस्वीकार होता है।
- SPF, DKIM और DMARC का मेल नहीं होता। कई फ़ॉर्म From फ़ील्ड में आगंतुक का पता डालते हैं। फिर संदेश, जैसे gmail.com पते से आने का दावा करता है, लेकिन आपका वेब सर्वर भेजता है—DMARC इसी को रोकता है।
- प्लगइन अद्यतन या थीम बदलाव फ़ॉर्म या CAPTCHA बिगाड़ता है। बदला टेम्पलेट फ़ील्ड छोड़ देता है, स्क्रिप्ट लोड नहीं होती या CAPTCHA विजेट बिना स्क्रिप्ट दिखता है—और हर सबमिशन सत्यापन में विफल होता है।
- प्राप्तकर्ता मेलबॉक्स भर गया है। मेल सर्वर नए संदेश मना करता है और वापसी संदेश ऐसे पते पर जाता है जिसे कोई नहीं पढ़ता।
- कुकी बैनर फ़ॉर्म स्क्रिप्ट रोकता है। सहमति उपकरण CAPTCHA या फ़ॉर्म स्क्रिप्ट को “मार्केटिंग” माने, तो कुकी अस्वीकारने वाले आगंतुकों को ऐसा फ़ॉर्म मिल सकता है जो सबमिट नहीं होता या टोकन न होने से सबमिशन अस्वीकार होते हैं।
- TLS प्रमाणपत्र या डोमेन समाप्त हो गया। आगंतुक ब्राउज़र चेतावनी देखकर लौटते हैं या मेल सर्वर तक सुरक्षित पहुँच नहीं होती। प्राप्तकर्ता मेलबॉक्स का डोमेन समाप्त हो, तो उस पर मेल रुक जाता है।
- कैशिंग परत पुराने पृष्ठ देती है। पूरे पृष्ठ का कैश समाप्त सुरक्षा टोकन (nonce या CSRF टोकन) वाला फ़ॉर्म दे सकता है। सर्वर सबमिशन अस्वीकार करता है और व्यवस्था के अनुसार आगंतुक को स्पष्ट त्रुटि नहीं दिखती।
From पते का जाल
तीसरे कारण को ध्यान से समझना चाहिए, क्योंकि कई फ़ॉर्म में यह डिफ़ॉल्ट रूप से अंतर्निहित है। DMARC जाँचता है कि दिखाई देने वाले From पते का डोमेन उस डोमेन से मिलता है जिसके लिए SPF या DKIM पुष्टि करते हैं। फ़ॉर्म आगंतुक के पते “से” संदेश भेजे, तो सर्वर को उस डोमेन से भेजने की अनुमति नहीं और जाँच विफल होती है। आगंतुक के डोमेन की DMARC नीति और अपने मेल प्रदाता के अनुसार संदेश स्पैम में जाता या अस्वीकार होता है। सुधार सरल है: अपने डोमेन के पते से भेजें और आगंतुक का पता Reply-To में रखें। “उत्तर दें” क्लिक करने पर आगंतुक तक ही पहुँचते हैं।
- From: आगंतुक का पता
- Reply-To नहीं
- सीधे वेब सर्वर से PHP mail()
- भेजने वाले डोमेन के लिए SPF, DKIM या DMARC नहीं
- संदेश केवल ईमेल के रूप में है
- From: अपने डोमेन का पता, जैसे form@yourdomain
- Reply-To: आगंतुक का पता
- प्रमाणीकरण वाला SMTP या प्रेषण सेवा
- SPF, DKIM और DMARC सेट हैं और मेल खाते हैं
- डेटाबेस में प्रति भी रखी जाती है
क्या करें
- 1नियमित रूप से अपने फ़ॉर्म से परीक्षण संदेश भेजें—कम से कम मासिक और हमेशा अद्यतन, थीम बदलाव या मेल सेटिंग बदलने के बाद। स्पष्ट परीक्षण चिह्न लगाएँ ताकि कोई उत्तर न दे।
- 2अपनी सामान्य लय जानें। सामान्यतः सप्ताह में कुछ संदेश आएँ, तो दो सप्ताह की चुप्पी जाँच का कारण है, शांत महीना नहीं।
- 3PHP mail() पर निर्भर रहने के बजाय प्रमाणीकरण वाले SMTP से भेजें—मेल प्रदाता या विशेष प्रेषण सेवा के माध्यम से।
- 4From में अपना डोमेन और Reply-To में आगंतुक का पता रखें। फिर उस डोमेन के SPF, DKIM और DMARC सेट करें ताकि संदेश जाँच पास करें।
- 5हर सबमिशन की प्रति डेटाबेस में रखें। कई फ़ॉर्म प्लगइन यह देते हैं, कभी अतिरिक्त सुविधा के रूप में। मेल विफल हो, तब भी पूछताछ बची रहती है।
- 6हर प्लगइन अद्यतन के बाद फ़ॉर्म जाँचें—CAPTCHA सहित और कुकी अस्वीकार करके भी।
ऐसी जाँचें भूलना आसान है, इसलिए स्वचालित करना उपयोगी है। खाते और सत्यापित डोमेन के साथ formexposed स्पष्ट चिह्नित परीक्षण सबमिशन भेजकर वास्तविक प्राप्ति जाँच सकता है (संदेश पहुँचने की जाँच, केवल आपकी स्वीकृति पर)। वह चुप्पी भी पहचानता है—सामान्यतः संदेश पाने वाले फ़ॉर्म को अचानक कोई न मिलना—और सूचना मेल के SPF, DKIM तथा DMARC के साथ TLS प्रमाणपत्र और डोमेन की समाप्ति भी जाँचता है। बदलाव होने पर ही अलर्ट मिलता है।
केवल पहली नज़र चाहिए: formexposed.com की निःशुल्क जाँच को खाता नहीं चाहिए और कुछ सबमिट नहीं होता। अन्य बातों के साथ वह मौजूद लेकिन खराब CAPTCHA दिखाती है—बिना स्क्रिप्ट का विजेट, सार्वजनिक परीक्षण कुंजी, ब्राउज़र त्रुटियाँ—फ़ॉर्म रुकने के शांत तरीकों में से एक। संदेश वास्तव में पहुँचते हैं या नहीं, केवल असली परीक्षण संदेश पुष्टि कर सकता है, इसलिए आज ही एक भेजें।