डेवलपर टूल · URL एनकोडर और डिकोडर
मेलटू को एन्कोड कैसे करें: विषय, बॉडी लाइन ब्रेक और एम्परसेंड के साथ लिंक
· यह क्यों मायने रखती है
इन्हें मेल करें URL एन्कोडिंग HTML
एक मेल्टो: किसी विषय और मुख्य भाग के साथ लिंक एक URL है, इसलिए रिक्त स्थान, लाइन ब्रेक और & को प्रतिशत-एन्कोडेड होना चाहिए। यह पोस्ट दिखाती है कि जब वे नहीं टूटते हैं तो क्या टूटता है और मेल क्लाइंट में सही ढंग से खुलने वाला लिंक कैसे बनाया जाए।
संपर्क लिंक जिसका विषय पहले स्थान पर रुका - एक ठोस टूटा हुआ मेलटो: और मेल क्लाइंट को क्या प्राप्त हुआ
<a href="mailto:test@example.com?subject=Support Inquiry">Send</a> जैसे संपर्क लिंक टूट जाते हैं क्योंकि "समर्थन पूछताछ" में रिक्त स्थान मेल क्लाइंट में लिंक को समाप्त कर देते हैं। कई ग्राहकों को विषय के रूप में केवल "समर्थन" प्राप्त होता है। ऐसा इसलिए होता है क्योंकि mailto: लिंक RFC 6068 का अनुसरण करते हैं, यह निर्दिष्ट करते हुए कि रिक्त स्थान और विशेष वर्णों को क्वेरी पैरामीटर में प्रतिशत-एन्कोडिंग की आवश्यकता होती है। पैरामीटर विभाजक होने से बचने के लिए एम्परसेंड को %26 एन्कोडिंग की आवश्यकता होती है।
टूटा हुआ मेल्टो: लिंक समस्या को स्पष्ट रूप से प्रदर्शित करते हैं। <a href="mailto:test@example.com?subject=Support Inquiry&body=Reply">Contact</a> जैसे निर्मित लिंक के परिणामस्वरूप केवल "समर्थन" विषय वाले संदेश आते हैं। विभिन्न मेल क्लाइंट में परीक्षण से अलग-अलग सहनशीलता का पता चलता है: ऐप्पल मेल आंशिक रूप से लिंक को संभालता है, जीमेल केवल "समर्थन" दिखाता है, आउटलुक पूरी तरह से विफल रहता है।
mailto: एक URL योजना है - RFC 6068 संक्षेप में, और कौन से भाग क्वेरी स्ट्रिंग हैं
RFC 6068 घटक-विशिष्ट एन्कोडिंग नियमों के साथ mailto: URL योजनाओं को परिभाषित करता है। नियमित URL के विपरीत, mailto: में प्रति घटक विशिष्ट नियम होते हैं। पता भाग (test@example.com) अनएन्कोडेड रहते हैं; @ और डोमेन संरचनात्मक हैं. क्वेरी पैरामीटर (विषय, मुख्य भाग, CC, बीCC) को एन्कोडिंग की आवश्यकता है। RFC 6068 संदर्भ RFC 3986 नियमों के लिए, रिक्त स्थान और विशेष वर्णों के लिए प्रतिशत-एन्कोडिंग अनिवार्य है। मानों के भीतर एम्परसेंड डेटा के रूप में प्रदर्शित होने पर %26 बन जाते हैं, सीमांकक नहीं।
मेलटो को समझना: योजना संरचना एन्कोडिंग गलतियों को रोकती है। फॉर्म है: mailto:address?parameter1=value1¶meter2=value2. प्रश्न चिह्न प्रश्न अनुभागों का परिचय देते हैं। एम्परसेंड अलग करने वाले पैरामीटर अनएनकोडेड रहते हैं; मानों के भीतर केवल एम्परसेंड %26 के रूप में एन्कोड होते हैं। यदि विषयों में "टॉम एंड जेरी" है, तो Tom%20%26%20Jerry के रूप में एन्कोड करें। विषय और शरीर के बीच का एम्परसेंड अनएनकोडेड रहता है। यह नेस्टेड एन्कोडिंग त्रुटि-प्रवण है।
विषय और मुख्य भाग को एनकोड करना - %20 के रूप में रिक्त स्थान, %0D%0A के रूप में लाइन ब्रेक, और मानों के अंदर %26 के रूप में &
विषयों और निकायों को एन्कोड करने के लिए रिक्त स्थान और विशेष वर्णों को सावधानीपूर्वक संभालने की आवश्यकता होती है। mailto: लिंक में रिक्त स्थान %20 बन जाते हैं, HTML फॉर्म के विपरीत प्लस चिह्न नहीं। यह महत्वपूर्ण अंतर वेब फ़ॉर्म से परिचित डेवलपर्स को परेशान करता है। लाइन ब्रेक को %0D%0A (ईमेल में CRLF लाइन के अंत) के रूप में एनकोड किया जाता है। एम्परसेंड्स %26 बन जाते हैं। प्रतिशत चिह्न %25 हो जाते हैं. विषयों में आमतौर पर रिक्त स्थान, उच्चारण और कोष्ठक होते हैं। निकायों में रिक्त स्थान, उच्चारण, पंक्ति विराम होते हैं।
मेल्टो में सामान्य एन्कोडिंग: लिंक में शामिल हैं: %20 के रूप में रिक्त स्थान, %0D%0A के रूप में नई लाइनें, %26 के रूप में एम्परसेंड, %25 के रूप में प्रतिशत, %23 के रूप में हैश, %3F के रूप में प्रश्न। गैर-ASCII जैसे उच्चारण पहले UTF-8 बाइट्स में परिवर्तित होते हैं, फिर प्रतिशत-एनकोड करते हैं। "Über रिपोर्ट" %C3%9ber%20रिपोर्ट बन जाती है। "हैलो! अलविदा" Hello%21%0D%0AGअलविदा बन जाता है। केवल मूल्यों को एन्कोड करें, संरचनात्मक नहीं? और और अक्षर.
व्यावहारिक उदाहरण: विषय, दो-लाइन बॉडी और CC के साथ एक लिंक बनाना - एन्कोडेड परिणाम और यह मेल क्लाइंट में कैसे दिखाई देता है
कार्य उदाहरण: विषय "बैठक एजेंडा (सितंबर)", निकाय "आइए चर्चा करें:" के साथ संबंध बनाना त्रैमासिक लक्ष्य", और cc "manager@example.com" पूर्ण एन्कोडिंग प्रदर्शित करता है। विषयों की आवश्यकता है: %20 के रूप में रिक्त स्थान, %28 और %29 के रूप में कोष्ठक। निकायों को चाहिए: "आइए हम चर्चा करें:" अधिकतर अपरिवर्तित (स्थान %20 है), लाइन ब्रेक %0D%0A के रूप में, "त्रैमासिक लक्ष्य" अधिकतर अपरिवर्तित। CC फ़ील्ड को एन्कोडिंग की आवश्यकता नहीं है।
परिणामी mailto: है: mailto:contact@example.com?विषय=बैठक%20एजेंडा%20%28सितंबर%29&शरीर=चलो%20uएस%20dइससकस%3A%0D%0Aत्रैमासिक%20gओल्स&CC=manager@example.com. ब्राउज़रों में परीक्षण से विभिन्न मेल क्लाइंट व्याख्याओं का पता चलता है। जीमेल सही विषय, दो-पंक्ति बॉडी और CC के साथ Compose विंडो खोलता है। आउटलुक समान परिणाम दिखाता है। Apple मेल को अनुमति की आवश्यकता है. वृद्ध ग्राहक शारीरिक समर्थन के अभाव में असफल हो जाते हैं।
यहां + गलत क्यों है - mailto: RFC 3986 का अनुसरण करता है, फॉर्म एन्कोडिंग नहीं, इसलिए + प्लस बना रहता है
प्लस चिह्न ग़लत क्यों हैं—mailto: RFC 3986 का अनुसरण करता है, एन्कोडिंग नहीं बनाता है, इसलिए प्लस शाब्दिक रहता है—महत्वपूर्ण अंतरों को स्पष्ट करता है। HTML फॉर्म एन्कोडिंग क्वेरी स्ट्रिंग्स में रिक्त स्थान के लिए प्लस का उपयोग करती है। RFC 3986 और RFC 6068 दोनों रिक्त स्थान के लिए %20 निर्दिष्ट करते हैं। एक मेल्टो: विषय = "मीटिंग+एजेंडा" के साथ शाब्दिक प्लस चिह्न वाले विषय बनाता है, रिक्त स्थान नहीं। यह गलती फॉर्म-एन्कोडिंग लॉजिक को mailto: जनरेशन में कॉपी करने से होती है। प्लस का मतलब प्लस है, स्पेस नहीं.
यह क्यों मायने रखता है: डेवलपर्स फॉर्म GET सबमिशन लॉजिक को mailto: जेनरेशन ब्रेक लिंक में कॉपी कर रहे हैं। एक विषय "मीटिंग एजेंडा" रूपों में "मीटिंग+एजेंडा" बन जाता है। मेलटू: लिंक में, यह शाब्दिक प्लसस के साथ "मीटिंग+एजेंडा" बनाता है। उपयोगकर्ता विषय पंक्तियों को मैन्युअल रूप से ठीक करते हैं। मेल्टो का परीक्षण: लिंक पर क्लिक करने या जेनरेट किए गए लिंक की जांच करने की आवश्यकता होती है, न कि फॉर्म नियमों का विश्लेषण करने की।
सामान्य गलतियाँ - HTML को भूल जाना - href में & विभाजकों से बचना, और पते में @ को प्रतिशत-एन्कोडिंग करना
सामान्य मेल्टो: निर्माण संबंधी गलतियों में HTML एम्परसेंड को href विशेषताओं में भूल जाना शामिल है। HTML में, वैध XHTML के लिए विशेषताओं में एम्परसेंड & होना चाहिए। href='mailto:address?subject=Test&body=Test' अमान्य है HTML; यह href='mailto:address?subject=Test&body=Test' होना चाहिए। यह URL एन्कोडिंग से भिन्न एन्कोडिंग का प्रतिनिधित्व करता है। HTML पार्सर्स & की व्याख्या ब्राउज़र द्वारा URL संसाधित करने से पहले करते हैं।
इन गलतियों के परीक्षण के लिए HTML स्रोत और ब्राउज़र कंसोल की जांच की आवश्यकता होती है। वास्तविक href मान देखने के लिए राइट-क्लिक करें और "तत्व का निरीक्षण करें" चुनें। पता बार में href मानों को कॉपी-पेस्ट करें (mailto: उपसर्ग के साथ) और मेल क्लाइंट की जांच करें। कुछ ईमेल लिंक कुछ ब्राउज़रों में काम करते हैं लेकिन अन्य में नहीं। स्वचालित परीक्षण कठिन है क्योंकि mailto: में बाहरी ग्राहक शामिल होते हैं, जिससे मैन्युअल सत्यापन आम हो जाता है।
इसमें क्या शामिल नहीं है - मेल क्लाइंट समर्थन अंतर और गहराई से एकाधिक प्राप्तकर्ता
इसमें जो शामिल नहीं है उसमें मेल क्लाइंट समर्थन अंतर और एकाधिक प्राप्तकर्ता शामिल हैं। सभी क्लाइंट समान रूप से RFC 6068 पैरामीटर का समर्थन नहीं करते हैं। बॉडी पैरामीटर को व्यापक समर्थन प्राप्त है लेकिन कुछ पुराने ग्राहक इसे अनदेखा कर देते हैं। CC और बीCC पैरामीटर में परिवर्तनशील समर्थन है। एकाधिक प्राप्तकर्ताओं को अल्पविराम से अलग करने वाले ईमेल पते की आवश्यकता होती है, जटिल पतों के लिए अल्पविराम को %2C के रूप में एन्कोड किया जाता है। विभिन्न स्थानों को प्रदर्शन के लिए उचित UTF-8 एन्कोडिंग की आवश्यकता होती है।
मेल क्लाइंट का विकास सभी प्लेटफ़ॉर्म पर mailto: व्यवहार को प्रभावित करता है। आधुनिक वेब मेल क्लाइंट (जीमेल, Outlook.com) में पुराने डेस्कटॉप क्लाइंट की तुलना में बेहतर RFC 6068 अनुपालन है। मोबाइल क्लाइंट के पास कभी-कभी सख्त पार्सिंग होती है। कुछ समृद्ध पाठ का समर्थन करते हैं जबकि अन्य केवल सादे पाठ का समर्थन करते हैं। डेवलपर्स को उन मेल क्लाइंट्स के साथ परीक्षण करना चाहिए जिनका उपयोग उनके दर्शक वास्तव में करते हैं। RFC 6068 विशिष्टताओं के बावजूद वास्तविक कार्यान्वयन भिन्न-भिन्न होते हैं।
टेकअवे: प्रत्येक मान को एनकोड करें, संरचना रखें - कैसे URL एनकोडर और डिकोडर का एकल-मूल्य मोड आपको पेस्ट करने के लिए एन्कोडेड विषय और बॉडी देता है
टेकअवे: प्रत्येक मान को एनकोड करें, संरचना रखें- URL एनकोडर और डिकोडर सिंगल-वैल्यू मोड एन्कोडेड विषयों और बॉडी को लिंक में पेस्ट करने के लिए तैयार करता है। टूल "मीटिंग एजेंडा (सितंबर)" जैसे अनएन्कोडेड मानों को स्वीकार करता है और "मीटिंग%20एजेंडा%20%28सितंबर%29" उत्पन्न करता है। आउटपुट को सीधे mailto: href विशेषताओं में कॉपी करें। मल्टी-लाइन बॉडी के लिए, %0D%0A-एन्कोडेड संस्करण प्राप्त करते हुए, लाइन ब्रेक के साथ प्लेनटेक्स्ट संस्करण चिपकाएँ।
सर्वोत्तम अभ्यास मेलटू को असेंबल करना है: मैन्युअल निर्माण के बजाय एन्कोडेड भागों से लिंक। HTML को JavaScript या टेम्प्लेट में गतिशील रूप से बनाते समय, & विभाजकों के साथ संयोजित करने से पहले प्रत्येक पैरामीटर को अलग से एन्कोड करें। स्थिर HTML के लिए, URL एनकोडर और डिकोडर हाथ से लिखने से पहले विश्वसनीय रूप से एन्कोडिंग का परीक्षण करते हैं। कोड टिप्पणियों में दस्तावेज़ एन्कोडिंग प्रक्रियाएं। परिनियोजन से पहले वास्तविक मेल क्लाइंट के साथ क्लिक करके परिणामी मेलटो: लिंक का परीक्षण करें।