Dokumen ini menjelaskan ekstensi IMAP yang disediakan oleh Gmail dan cara developer dapat menggunakannya. Dokumen ini mengasumsikan bahwa Anda sudah memahami protokol IMAP.
Ringkasan
Gmail menyediakan serangkaian ekstensi IMAP untuk memungkinkan penulis program email IMAP memberikan pengalaman yang lebih mirip Gmail melalui IMAP. Developer yang mengintegrasikan fitur Gmail ke dalam aplikasi web atau seluler mungkin ingin menggunakan Gmail API RESTful.
Anda dapat menggunakan ekstensi saat mengakses Gmail melalui protokol IMAP standar atau saat terhubung dengan OAuth.
Memeriksa keberadaan ekstensi
Gmail mengiklankan dukungan ekstensi dalam responsnya terhadap perintah
CAPABILITY. Keberadaan X-GM-EXT-1 dalam daftar kemampuan yang didukung menunjukkan dukungan untuk ekstensi yang dijelaskan dalam dokumen ini.
Sebaiknya klien memperkenalkan diri dengan perintah IMAP ID (RFC 2971), dan menyertakan
alamat kontak sebagai pengganti jika perubahan pada ekstensi ini diperlukan.
Berikut adalah contoh handshake dan penggunaan perintah CAPABILITY di endpoint IMAP Gmail:
* 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
Ekstensi Penggunaan Khusus perintah LIST
Gmail mendukung
Ekstensi LIST IMAP untuk Kotak Surat Penggunaan Khusus,
yang menyediakan atribut baru untuk folder khusus. Atribut ini memungkinkan
klien mengetahui folder mana yang khusus, seperti \All. Daftar folder khusus saat ini terdiri dari: Berbintang, Penting, Item Terkirim, Draf, Spam, Semua Email, dan Sampah. Semua respons LIST berisi atribut Penggunaan Khusus ini;
ini bukan CAPABILITY baru atau sesuatu yang harus diaktifkan oleh klien.
Berikut adalah contoh transkrip panggilan ke 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
Respons mengikuti standar Penggunaan Khusus dengan atribut \Important
tambahan yang ditambahkan untuk Kotak Prioritas Gmail
(yaitu, "[Gmail]/Important").
XLIST tidak digunakan lagi
Perintah XLIST khusus Gmail tidak digunakan lagi pada tahun 2013 dan digantikan dengan
Standar Daftar Penggunaan Khusus IMAP.
Sebaiknya klien bermigrasi dari XLIST ke standar industri Penggunaan Khusus
sesegera mungkin. Perhatikan bahwa nama atribut standar Penggunaan Khusus
mirip, tetapi tidak sama dengan nama atribut XLIST lama.
Ekstensi perintah SEARCH: X-GM-RAW
Untuk memberikan akses ke sintaksis penelusuran Gmail lengkap, Gmail menyediakan atribut penelusuran X-GM-RAW. Argumen yang diteruskan dengan atribut X-GM-RAW saat menjalankan perintah SEARCH atau UID SEARCH ditafsirkan dengan cara yang sama seperti di antarmuka web Gmail.
Berikut adalah contoh transkrip panggilan ke SEARCH menggunakan atribut
X-GM-RAW:
a005 SEARCH X-GM-RAW "has:attachment in:unread"
* SEARCH 123 12344 5992
a005 OK SEARCH (Success)
Akses ke ID pesan unik Gmail: X-GM-MSGID
Gmail menyediakan ID pesan unik untuk setiap email sehingga Anda dapat mengidentifikasi pesan unik di beberapa folder. Anda dapat mengambil ID pesan ini menggunakan atribut X-GM-MSGID pada perintah FETCH. ID pesan adalah bilangan bulat tidak bertanda 64-bit dan merupakan nilai desimal yang setara untuk string hex ID yang digunakan di antarmuka web dan Gmail API.
Berikut adalah contoh transkrip panggilan untuk mengambil X-GM-MSGID pesan dengan perintah FETCH:
a006 FETCH 1 (X-GM-MSGID)
* 1 FETCH (X-GM-MSGID 1278455344230334865)
a006 OK FETCH (Success)
Anda juga dapat menggunakan atribut X-GM-MSGID dalam perintah SEARCH atau UID SEARCH
untuk menemukan nomor urut atau UID pesan yang diberikan
ID pesan Gmail. Berikut adalah contoh transkrip panggilan untuk mengambil UID pesan menggunakan perintah UID SEARCH:
a007 UID SEARCH X-GM-MSGID 1278455344230334865
* SEARCH 1
a007 OK SEARCH (Success)
Akses ke ID rangkaian pesan Gmail: X-GM-THRID
Gmail menyediakan ID rangkaian pesan untuk mengaitkan grup pesan dengan cara yang sama seperti di antarmuka web Gmail. Anda dapat mengambil ID
thread ini menggunakan atribut X-GM-THRID pada perintah FETCH. ID rangkaian pesan
adalah bilangan bulat tidak bertanda 64-bit dan merupakan nilai desimal yang setara untuk string hex ID
yang digunakan di antarmuka web dan
Gmail API.
Berikut adalah contoh transkrip panggilan untuk mengambil X-GM-THRID dari beberapa pesan (dalam dua rangkaian pesan) dengan perintah FETCH:
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)
Anda juga dapat menggunakan atribut X-GM-THRID dalam perintah SEARCH atau UID SEARCH
untuk menemukan nomor urut atau UID pesan dalam rangkaian pesan tertentu.
Berikut adalah contoh transkrip panggilan untuk mengambil UID dari beberapa pesan menggunakan perintah UID SEARCH:
a009 UID SEARCH X-GM-THRID 1266894439832287888
* SEARCH 2 3 4
a009 OK Search (Success)
Akses ke label Gmail: X-GM-LABELS
Gmail memperlakukan label sebagai folder untuk tujuan IMAP. Oleh karena itu,
Anda dapat mengubah label menggunakan perintah IMAP standar yang bertindak pada folder:
CREATE, RENAME, dan DELETE. Label sistem, yaitu label yang dibuat oleh Gmail, sudah digunakan dan diberi awalan "[Gmail]" atau "[GoogleMail]" dalam daftar label. Gunakan perintah LIST untuk mendapatkan seluruh daftar label untuk kotak surat.
Anda dapat mengambil label untuk pesan tertentu menggunakan atribut X-GM-LABELS
dengan perintah FETCH. Atribut ditampilkan sebagai daftar
ASTRING, yang dienkode dalam UTF-7 sebagaimana mestinya. ASTRING adalah
atom atau
string sebagaimana ditentukan
oleh RFC.
Berikut adalah contoh transkrip panggilan untuk mengambil X-GM-LABELS
beberapa pesan dengan perintah 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)
Anda dapat menambahkan label ke pesan menggunakan perintah STORE bersama dengan
atribut X-GM-LABELS. Berikut adalah contoh transkrip
yang menunjukkan cara menambahkan label ke pesan:
a011 STORE 1 +X-GM-LABELS (foo)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante" foo))
a011 OK STORE (Success)
Anda juga dapat menggunakan atribut X-GM-LABELS dalam perintah SEARCH atau UID SEARCH
untuk menemukan nomor urut atau UID dari semua pesan dalam folder
dengan label tertentu. Berikut adalah contoh transkrip panggilan untuk mengambil
nomor urut beberapa pesan menggunakan perintah SEARCH:
a012 SEARCH X-GM-LABELS foo
* SEARCH 1 2
a012 OK SEARCH (Success)
Referensi
- IMAP: RFC 3501: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
- ID IMAP: RFC 2971: IMAP4 ID EXTENSION
- Penggunaan Khusus IMAP: RFC 6154: Ekstensi LIST IMAP untuk Kotak Surat Penggunaan Khusus