2010-04-06 16 views
9

हाय लोग मुझे पता चला Gmail लिखें स्क्रीन खोलने के लिए आप में लॉग इन होना करने के लिए है और खोलने चाहते हैं कि नीचे दिए गए लिंक:Prefilling HTML पाठ के साथ स्क्रीन रचना Gmail

https://mail.google.com/a/domain/?view=cm&fs=1&tf=1&source=mailto&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&cc=WHOEVER%40COMPANY.COM&bcc=WHOEVER%40COMPANY.COM&body=PREPOPULATEDBODY

चर की जगह रचना फॉर्म पर संबंधित स्थानों में भरता है। हालांकि अगर मैं शरीर में मल्टीलाइन टेक्स्ट या लाइन ब्रेक में प्रवेश करना चाहता हूं तो यह सिर्फ काम नहीं कर रहा है, भले ही मैं इसे urlencode करता हूं। यहां कोई विचार है?

+0

जब आप url-encode करते हैं तो आप न्यूलाइन के लिए क्या उपयोग कर रहे हैं? और आप मानक 'mailto:' URI योजना का उपयोग क्यों नहीं कर रहे हैं? ('href =" mailto: [email protected]? subject = SubjectHere "') – Anthony

+0

असल में यह लिंक जीमेल कंपोज़ स्क्रीन खोलता है - मैंने न्यूलाइन के साथ-साथ एचटीएमएल ब्रेक के यूरेनकोडिंग की कोशिश की लेकिन यह काम नहीं किया :(- यह एक google के लिए है ऐप्स आधारित प्रोजेक्ट – Ali

+0

प्रश्न में प्रदान किए गए लिंक को सही करने के कारण क्योंकि प्रदान किया गया लिंक सर्वर त्रुटि पृष्ठ पर जाता है। यह दूसरों की मदद कर सकता है। https://mail.google.com/?view=cm&fs=1&tf=1&source=mailto&to= WHOEVER% 40COMPANY.COM और su = SUBJECTHERE और cc = WHOEVER% 40COMPANY.COM और bcc = WHOEVER% 40COMPANY.COM और body = PREPOPULATEDBODY –

उत्तर

11

जांचें कि आपकी UrlEncode विधि वास्तव में "% 0a" में न्यूलाइन का अनुवाद करती है। यहाँ एक 2-लाइन ईमेल शरीर का एक उदाहरण है:

https://mail.google.com/mail/?view=cm&ui=2&tf=0&fs=1&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&body=LINE1%0aLINE2

+2

धन्यवाद जो इसे बहुत हल करता है लेकिन अब मुझे बहुत अधिक टेक्स्ट के साथ एक और समस्या है - http://stackoverflow.com/questions/2590467/prefilling-large-volumes-of-body-text-in-gmail-compose-getting -ए -request-uri-too – Ali

+1

लिखें यूआरएल वास्तव में महान काम कर रहा है :)। धन्यवाद। क्या कोई तरीका है जहां हम मेल विंडो खोल सकते हैं जैसे कि इसका उत्तर या आगे? ताकि उपयोगकर्ता सीधे आगे बढ़ सकें या ईमेल का जवाब दे सकें। –

+0

@ कार्टिक इसके लिए कोई समाधान ढूंढता है? –

2

मैं बहु शरीर एन्कोड करने के लिए मानक जावास्क्रिप्ट encodeURIComponent() का इस्तेमाल किया। इसने काम कर दिया।

https://mail.google.com/?view=cm&fs=1&tf=1& ....

8

जीमेल क्या एचटीएमएल 5 के registerProtocolHandler() का उत्सर्जन करता है के लिए समर्थन हासिल है:

इसके अलावा जो लोग सामान्य जीमेल और न एप्लिकेशन डोमेन विशिष्ट खाता prepopulate करना चाहते हैं, बजाय इस URL का उपयोग करें।

उदाहरण:

var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test"); 

यही कारण है कि जीमेल आप का उपयोग करने की उम्मीद है। निश्चित रूप से डोमेन-विशिष्ट रचना यूआरआई के लिए शुरुआत को संशोधित करें।

हालांकि, यह स्वयं द्वारा रचना फॉर्म को लोड करता है (इनबॉक्स पृष्ठ के साथ एकीकृत नहीं)। इसलिए, यदि आप इनबॉक्स पृष्ठ में एकीकृत रचना फॉर्म चाहते हैं, तो आपको लोड करने की आवश्यकता है:

"https://mail.google.com/mail/?compose=1&view=cm&fs=1&to=1&su=2&body=3&cc=4&bcc=5" 

इसके बजाए। लेकिन, आपको यह सुनिश्चित करने के लिए कि वे एक HTTP यूआरआई में भेजने के लिए उपयुक्त हैं, सुनिश्चित करने के लिए पहले hfvalues ​​प्राप्त करने और उनके प्रतिशत-एन्कोडिंग को ठीक करने के लिए मेलो यूआरआई को पार्स करने के लिए आवश्यक है। उस पर अधिक जानकारी के लिए नीचे देखें।

अब, एचटीएमएल 5 कम्पोज़ यूआरआई के साथ जीमेल क्या करता है, मेलो यूआरआई प्राप्त करने के लिए यूआरएल परम प्रतिशत-डीकोड करता है। फिर, यह hfvalues ​​प्राप्त करने के लिए मेलो यूआरआई पार्स करता है। फिर, यह इन hfvalues ​​का उपयोग यूआरआई को इनबॉक्स-एकीकृत एक बनाने के लिए करता है और आपको इसे रीडायरेक्ट करता है।

जीमेल की एचटीएमएल 5 विधि के साथ समस्या यह है कि यह hfvalues ​​में '% 2B "में प्रतिशत-एन्कोड' + 'वर्ण नहीं है। इसका अंतिम परिणाम यह है कि मेलो यूआरआई में '+' अक्षर (वे यूआरआई के लिए मेल नहीं हैं) जीमेल कम्पोज़ फॉर्म में रिक्त स्थान के रूप में बाहर आते हैं।

Gmail बग हल करने के लिए, तो आप सिर्फ कार्य करें:

var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test".replace(/\+/g, "%2B")); 

बजाय।

बग साल पहले रिपोर्ट किया गया था, लेकिन जीमेल इसे ठीक करने से इंकार कर देता है।

जैसा कि आपको इनबॉक्स-एकीकृत कंपोज़ यूआरआई के लिए भी देखना चाहिए, यदि आपके पास मेलो यूआरआई "mailto:? Subject = 1 + 2" है, तो आपको यह सुनिश्चित करना होगा कि आप su = 1% 2B2 उत्सर्जित करें यूआरआई लिखें और su = 1 + 2 नहीं। उत्तरार्द्ध '+' के बजाय विषय क्षेत्र में एक स्थान का कारण बन जाएगा। यह हिस्सा जीमेल के साथ एक बग नहीं है। यह बस HTTP काम करता है।

आप एचटीएमएल 5 तरीके से कैसे देखते हैं, यह देखने के लिए आप my Gmail Compose Extension for Opera (इसे अनजिप) के स्रोत देख सकते हैं। यह बहुत सरल है। लेकिन, इसमें + से% 2 बी वर्कअराउंड नहीं है।

हालांकि, आप the newer version of the extension देख सकते हैं कि मैं अधिक उन्नत हैंडलिंग के लिए परीक्षण कर रहा हूं (किसी को प्राथमिकता में डोमेन-विशिष्ट विकल्प का परीक्षण करने की आवश्यकता है)। यह '12 'केस, असुरक्षित वर्ण और डुप्लीकेट hfvalues ​​को संभालने के लिए मेलto यूआरआई और उसके hfvalues ​​सामान्य करने के लिए my custom, generic mailto URI parser का उपयोग करता है। यह यह चुनने का विकल्प भी प्रदान करता है कि आप एचटीएमएल 5 रचना यूआरआई का उपयोग करना चाहते हैं या नहीं।

आप चीजों को कैसे करें के लिए this User JS script for Opera पर भी एक नज़र डाल सकते हैं।

पहले उल्लिखित डुप्लिकेट एचएफवल्यू मुद्दे और अन्य मेलो यूआरआई सामान के लिए, my mailto URI spec देखें, जिसका उपयोग RFC6068 के लिए अनुसंधान और प्रतिक्रिया के लिए किया गया था।

नोट: सिर्फ इसलिए कि जीमेल उपयोगकर्ता के पास समृद्ध टेक्स्ट संपादन चालू है, इसका मतलब यह नहीं है कि जीमेल रचनात्मक यूआरआई में एचटीएमएल मार्कअप स्वीकार करेगा और इसका इलाज करेगा। यह सब पाठ के रूप में व्याख्या की गई है।

+0

अच्छा स्पष्टीकरण। बहुत बुरा यह जवाब के रूप में पूर्ववत रूप से स्वीकार नहीं किया जा सकता है। – Palpatim

+0

क्या आप जानते हैं कि वैकल्पिक जीमेल खाते का चयन करने के लिए इन यूआरएल में [email protected] को गठबंधन करना संभव है? – oodavid

+0

@oodavid मुझे * पता नहीं *, लेकिन मुझे लगता है कि यह कुकीज़ द्वारा किया गया है और मान लीजिए। – Shadow2531

1

वर्तमान में (फरवरी 2014), करने के लिए और विषय क्षेत्रों, उपयोग के साथ लिखें स्क्रीन prepopulate करने के लिए:

https://mail.google.com/mail/?&v=b&cs=wh&[email protected]&subject=subject%20goes%20here 

नोट: cs=wh, महत्वपूर्ण है के रूप में लिखें हाइपरलिंक cs=b, जो स्वतः भर जाएंगी नहीं करता है का उपयोग करता है।

+0

पर मेरा उपयोगकर्ता नाम है यह मेरे लिए काम करता है। –

0

एक और सीमा यह है कि जीईटी अनुरोध एक निश्चित संख्या तक सीमित हैं इसलिए मेलतो + जीईटी पैराम विधि का उपयोग करने की कोशिश सामग्री के बड़े टुकड़ों के लिए काम नहीं करेगा। किसी को किसी भी प्रकार के वेब अनुरोध के माध्यम से नई कम्पोज़ विंडो में बड़ी सामग्री को धक्का देने का कोई और तरीका मिला है?

जो मैं यह कह सकता हूं उससे मेल करना वास्तव में एक ब्राउज़र क्रिया सही है?

0

उस टिप के लिए धन्यवाद। एक चीज जिसे अन्य उत्तरों में निर्दिष्ट नहीं किया गया है, यह है कि यदि आप https://mail.google.com/mail/ के बजाय https://mail.google.com/a/domain.com/ का उपयोग करके Google खाते के साथ एक व्यक्तिगत खाते और एक पेशेवर व्यक्ति के साथ जीमेल में लॉग इन हैं, तो आप यह निर्दिष्ट करने की अनुमति देते हैं कि किस मेलबॉक्स का उपयोग करना है संदेश भेजना अन्यथा जीमेल सिर्फ आपके द्वारा लॉग इन किए गए खाते को लोड करता है।

संबंधित मुद्दे