आईएमएपी एक्सटेंशन

इस दस्तावेज़ में, Gmail की ओर से उपलब्ध कराए गए आईएमएपी एक्सटेंशन के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि डेवलपर इनका इस्तेमाल कैसे कर सकते हैं. इस दस्तावेज़ में, यह मानकर जानकारी दी गई है कि आपको आईएमएपी प्रोटोकॉल के बारे में पता है.

खास जानकारी

Gmail, आईएमएपी एक्सटेंशन का एक सेट उपलब्ध कराता है. इससे आईएमएपी क्लाइंट के लेखक, आईएमएपी के ज़रिए Gmail जैसा बेहतर अनुभव दे पाते हैं. डेवलपर, Gmail की सुविधाओं को अपने वेब या मोबाइल ऐप्लिकेशन में इंटिग्रेट करते हैं. ऐसे में, वे RESTful Gmail API का इस्तेमाल कर सकते हैं.

एक्सटेंशन का इस्तेमाल, स्टैंडर्ड आईएमएपी प्रोटोकॉल के ज़रिए Gmail को ऐक्सेस करते समय या OAuth से कनेक्ट करते समय किया जा सकता है.

एक्सटेंशन की मौजूदगी की जांच करना

Gmail, CAPABILITY कमांड के जवाब में, एक्सटेंशन इस्तेमाल करने की सुविधा का विज्ञापन करता है. X-GM-EXT-1 की मौजूदगी से पता चलता है कि इस दस्तावेज़ में बताए गए एक्सटेंशन, सुविधा के साथ काम करते हैं.

हमारा सुझाव है कि क्लाइंट, IMAP ID कमांड (RFC 2971) का इस्तेमाल करके खुद की पहचान ज़ाहिर करें. साथ ही, इन एक्सटेंशन में बदलाव करने की ज़रूरत पड़ने पर, संपर्क पते को फ़ॉलबैक के तौर पर शामिल करें.

Gmail IMAP एंडपॉइंट पर, हैंडशेक और CAPABILITY कमांड के इस्तेमाल का उदाहरण यहां दिया गया है:

* OK Gimap ready for requests from 127.0.0.1 k2if6111336rvb.0
a001 LOGIN username@gmail.com password
a001 OK username@gmail.com authenticated (Success)
a001 OK Login successful
a002 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT LITERAL+ IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1
a002 OK Success
a003 ID ("name" "clientname" "version" "1.2.3" "vendor" "companyname" "contact" "foo@example.com")
* ID ("name" "GImap" "vendor" "Google, Inc." "support-url" "http://mail.google.com/support" "remote-host" "127.0.0.1")
a003 OK Success

LIST कमांड का खास इस्तेमाल वाला एक्सटेंशन

Gmail, खास इस्तेमाल वाले मेलबॉक्स के लिए आईएमएपी लिस्ट एक्सटेंशन के साथ काम करता है. यह खास फ़ोल्डर के लिए नए एट्रिब्यूट उपलब्ध कराता है. इन एट्रिब्यूट से क्लाइंट को यह पता चलता है कि कौनसे फ़ोल्डर खास हैं, जैसे कि \All. खास फ़ोल्डर की मौजूदा सूची में ये फ़ोल्डर शामिल हैं: तारांकित, ज़रूरी, भेजे गए आइटम, ड्राफ़्ट, स्पैम, सभी ईमेल, और ट्रैश. सभी LIST जवाबों में, इस्तेमाल के लिए खास तौर पर बनाए गए ये एट्रिब्यूट शामिल होते हैं; यह कोई नई CAPABILITY सुविधा नहीं है. साथ ही, क्लाइंट को इसे चालू करने की ज़रूरत नहीं है.

यहां LIST को किए गए कॉल की ट्रांसक्रिप्ट का उदाहरण दिया गया है:

a004 LIST "" "*"
* LIST (\HasNoChildren) "/" "INBOX"
* LIST (\Noselect \HasChildren) "/" "[Gmail]"
* LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail"
* LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts"
* LIST (\HasNoChildren \Important) "/" "[Gmail]/Important"
* LIST (\HasNoChildren \Sent) "/" "[Gmail]/Sent Mail"
* LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam"
* LIST (\HasNoChildren \Flagged) "/" "[Gmail]/Starred"
* LIST (\HasNoChildren \Trash) "/" "[Gmail]/Trash"
a004 OK Success

जवाब में, खास इस्तेमाल के लिए बने स्टैंडर्ड का पालन किया गया है. साथ ही, Gmail के मुख्य इनबॉक्स के लिए एक और \Important एट्रिब्यूट जोड़ा गया है (यानी कि "[Gmail]/Important").

XLIST का अब इस्तेमाल नहीं किया जा सकता

Gmail के लिए खास तौर पर बनाई गई XLIST कमांड को 2013 में बंद कर दिया गया था. इसके बजाय, आईएमएपी स्पेशल-यूज़ लिस्ट स्टैंडर्ड का इस्तेमाल किया जाता है. हमारा सुझाव है कि क्लाइंट जितनी जल्दी हो सके, XLIST से Special-Use industry standard पर माइग्रेट कर लें. ध्यान दें कि खास मकसद के लिए इस्तेमाल किए जाने वाले स्टैंडर्ड एट्रिब्यूट के नाम, लेगसी XLIST एट्रिब्यूट के नामों से मिलते-जुलते हैं, लेकिन एक जैसे नहीं हैं.

SEARCH कमांड का एक्सटेंशन: X-GM-RAW

Gmail में खोज के पूरे सिंटैक्स का ऐक्सेस देने के लिए, Gmail X-GM-RAW खोज एट्रिब्यूट उपलब्ध कराता है. SEARCH या UID SEARCH कमांड को लागू करते समय, X-GM-RAW एट्रिब्यूट के साथ पास किए गए आर्ग्युमेंट को Gmail के वेब इंटरफ़ेस की तरह ही समझा जाता है.

X-GM-RAW एट्रिब्यूट का इस्तेमाल करके, SEARCH को किए गए कॉल की ट्रांसक्रिप्ट का उदाहरण यहां दिया गया है:

a005 SEARCH X-GM-RAW "has:attachment in:unread"
* SEARCH 123 12344 5992
a005 OK SEARCH (Success)

Gmail के यूनीक मैसेज आईडी: X-GM-MSGID को ऐक्सेस करने की सुविधा

Gmail, हर ईमेल के लिए एक यूनीक मैसेज आईडी उपलब्ध कराता है, ताकि अलग-अलग फ़ोल्डर में मौजूद किसी यूनीक मैसेज की पहचान की जा सके. FETCH कमांड पर X-GM-MSGID एट्रिब्यूट का इस्तेमाल करके, इस मैसेज आईडी को वापस पाया जा सकता है. मैसेज आईडी, 64-बिट का बिना हस्ताक्षर वाला पूर्णांक होता है. यह वेब इंटरफ़ेस और Gmail API में इस्तेमाल की गई आईडी हेक्स स्ट्रिंग के डेसिमल के बराबर होता है.

FETCH कमांड वाले मैसेज के X-GM-MSGID को वापस पाने के लिए किए गए कॉल की ट्रांसक्रिप्ट का उदाहरण यहां दिया गया है:

a006 FETCH 1 (X-GM-MSGID)
* 1 FETCH (X-GM-MSGID 1278455344230334865)
a006 OK FETCH (Success)

Gmail के मैसेज आईडी के हिसाब से, किसी मैसेज के क्रम संख्या या UID को ढूंढने के लिए, SEARCH या UID SEARCH कमांड में X-GM-MSGID एट्रिब्यूट का इस्तेमाल किया जा सकता है. यहां UID SEARCH कमांड का इस्तेमाल करके, किसी मैसेज के UID को वापस पाने के लिए किए गए कॉल की ट्रांसक्रिप्ट का उदाहरण दिया गया है:

a007 UID SEARCH X-GM-MSGID 1278455344230334865
* SEARCH 1
a007 OK SEARCH (Success)

Gmail थ्रेड आईडी का ऐक्सेस: X-GM-THRID

Gmail, थ्रेड आईडी उपलब्ध कराता है, ताकि मैसेज के ग्रुप को Gmail के वेब इंटरफ़ेस की तरह ही जोड़ा जा सके. FETCH कमांड पर X-GM-THRID एट्रिब्यूट का इस्तेमाल करके, इस थ्रेड आईडी को वापस पाया जा सकता है. थ्रेड आईडी, 64-बिट का बिना हस्ताक्षर वाला पूर्णांक होता है. यह वेब इंटरफ़ेस और Gmail API में इस्तेमाल की गई आईडी हेक्स स्ट्रिंग के डेसिमल के बराबर होता है.

यहां FETCH कमांड का इस्तेमाल करके, दो थ्रेड में मौजूद कई मैसेज के X-GM-THRID को वापस पाने के लिए किए गए कॉल की ट्रांसक्रिप्ट का उदाहरण दिया गया है:

a008 FETCH 1:4 (X-GM-THRID)
* 1 FETCH (X-GM-THRID 1278455344230334865)
* 2 FETCH (X-GM-THRID 1266894439832287888)
* 3 FETCH (X-GM-THRID 1266894439832287888)
* 4 FETCH (X-GM-THRID 1266894439832287888)
a008 OK FETCH (Success)

किसी थ्रेड में मौजूद मैसेज के क्रम संख्या या UID ढूंढने के लिए, SEARCH या UID SEARCH कमांड में X-GM-THRID एट्रिब्यूट का इस्तेमाल किया जा सकता है. UID SEARCH कमांड का इस्तेमाल करके, कई मैसेज के UID पाने के लिए किए गए कॉल की ट्रांसक्रिप्ट का उदाहरण यहां दिया गया है:

a009 UID SEARCH X-GM-THRID 1266894439832287888
* SEARCH 2 3 4
a009 OK Search (Success)

Gmail के लेबल का ऐक्सेस: X-GM-LABELS

Gmail, IMAP के लिए लेबल को फ़ोल्डर के तौर पर मानता है. इसलिए, फ़ोल्डर पर काम करने वाली स्टैंडर्ड आईएमएपी कमांड का इस्तेमाल करके, लेबल में बदलाव किया जा सकता है: CREATE, RENAME, और DELETE. सिस्टम लेबल, Gmail की ओर से बनाए गए लेबल होते हैं. इन्हें रिज़र्व किया जाता है. साथ ही, लेबल की सूची में इन्हें "[Gmail]" या "[GoogleMail]" के तौर पर दिखाया जाता है. किसी मेलबॉक्स के सभी लेबल की सूची पाने के लिए, LIST कमांड का इस्तेमाल करें.

FETCH कमांड के साथ X-GM-LABELS एट्रिब्यूट का इस्तेमाल करके, किसी मैसेज के लिए लेबल वापस पाए जा सकते हैं. इस एट्रिब्यूट को ASTRING की सूची के तौर पर दिखाया जाता है. इसे ज़रूरत के मुताबिक UTF-7 में कोड में बदला जाता है. ASTRING, RFC के मुताबिक एक ऐटम या स्ट्रिंग होता है.

X-GM-LABELS कमांड का इस्तेमाल करके, कई मैसेज के FETCH को वापस पाने के लिए किए गए कॉल की ट्रांसक्रिप्ट का उदाहरण यहां दिया गया है:

a010 FETCH 1:4 (X-GM-LABELS)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante"))
* 2 FETCH (X-GM-LABELS (foo))
* 3 FETCH (X-GM-LABELS ())
* 4 FETCH (X-GM-LABELS (\Drafts))
a010 OK FETCH (Success)

STORE एट्रिब्यूट के साथ STORE कमांड का इस्तेमाल करके, किसी मैसेज में लेबल जोड़े जा सकते हैं.X-GM-LABELS यहां एक उदाहरण दिया गया है, जिसमें किसी मैसेज में लेबल जोड़ने का तरीका बताया गया है:

a011 STORE 1 +X-GM-LABELS (foo)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante" foo))
a011 OK STORE (Success)

किसी दिए गए लेबल वाले फ़ोल्डर में मौजूद सभी मैसेज के क्रम संख्या या UID ढूंढने के लिए, SEARCH या UID SEARCH कमांड में X-GM-LABELS एट्रिब्यूट का इस्तेमाल किया जा सकता है. SEARCH कमांड का इस्तेमाल करके, कई मैसेज के क्रम संख्याएं वापस पाने के लिए किए गए कॉल की ट्रांसक्रिप्ट का उदाहरण यहां दिया गया है:

a012 SEARCH X-GM-LABELS foo
* SEARCH 1 2
a012 OK SEARCH (Success)

रेफ़रंस