Dokumen ini menjelaskan ekstensi IMAP yang disediakan oleh Gmail dan cara ekstensi tersebut dapat digunakan oleh developer. Dokumen ini mengasumsikan bahwa Anda telah memahami protokol IMAP.
Ringkasan
Gmail menyediakan seperangkat ekstensi IMAP untuk memungkinkan penulis klien IMAP memberikan pengalaman yang lebih mirip Gmail melalui IMAP. Developer yang mengintegrasikan fitur Gmail ke dalam aplikasi web atau seluler mereka dapat menggunakan RESTful Gmail API.
Ekstensi dapat digunakan saat mengakses Gmail melalui protokol IMAP standar atau saat tersambung melalui OAuth.
Memeriksa keberadaan ekstensi
Gmail mengiklankan dukungan ekstensinya sebagai respons terhadap perintah CAPABILITY
. Dukungan ekstensi dalam dokumen ini ditunjukkan dengan adanya X-GM-EXT-1
dalam daftar kemampuan yang didukung.
Klien sangat disarankan untuk mengumumkan dirinya sendiri dengan perintah ID IMAP (RFC 2971), dan menyertakan alamat kontak sebagai penggantian 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 dari perintah LIST
Gmail mendukung Ekstensi DAFTAR IMAP untuk Kotak Surat Penggunaan Khusus, yang memberikan atribut baru untuk folder khusus. Atribut ini memungkinkan klien mengetahui folder mana yang khusus (mis. \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 ENABLEd
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
Responsnya 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 Daftar Penggunaan Khusus IMAP. Klien sangat disarankan untuk bermigrasi dari XLIST
ke standar industri Penggunaan Khusus sesegera mungkin. Perlu diperhatikan 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
akan 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 memberikan ID pesan unik untuk setiap email sehingga pesan unik dapat diidentifikasi di beberapa folder. Pengambilan ID pesan ini didukung melalui atribut X-GM-MSGID
pada perintah FETCH
. ID pesan adalah bilangan bulat tanpa tanda tangan 64-bit dan setara dengan desimal untuk string heksadesimal 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)
Atribut X-GM-MSGID
juga dapat digunakan dalam perintah SEARCH
atau UID SEARCH
untuk menemukan nomor urut atau UID
dari 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 utas untuk mengaitkan grup pesan dengan cara yang sama seperti di antarmuka web Gmail. Pengambilan ID thread ini didukung melalui atribut X-GM-THRID
pada perintah FETCH
. ID thread adalah bilangan bulat tanpa tanda tangan 64-bit dan merupakan padanan desimal untuk string heksadesimal ID yang digunakan dalam antarmuka web dan Gmail API.
Berikut adalah contoh transkrip panggilan untuk mengambil X-GM-THRID
dari beberapa pesan (dalam dua thread) 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)
Atribut X-GM-THRID
juga dapat digunakan dalam perintah SEARCH
atau UID SEARCH
untuk menemukan nomor urut atau UID
pesan dalam thread 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-LABEL
Gmail memperlakukan label sebagai folder untuk tujuan IMAP. Dengan demikian, label dapat diubah menggunakan perintah IMAP standar, CREATE
, RENAME
, dan DELETE
, yang bekerja pada folder. Label sistem, yang merupakan label yang dibuat oleh Gmail, dicadangkan dan diawali dengan "[Gmail]" atau "[GoogleMail]" di daftar label. Gunakan perintah XLIST
untuk mendapatkan seluruh daftar label untuk kotak surat.
Label untuk pesan tertentu dapat diambil menggunakan atribut X-GM-LABELS
dengan perintah FETCH
. Atribut ini ditampilkan sebagai daftar ASTRING
, yang dienkode dalam UTF-7 sebagaimana mestinya. ASTRING
adalah atom atau string seperti yang ditentukan oleh RFC.
Berikut adalah contoh transkrip panggilan untuk mengambil X-GM-LABELS
dari 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)
Label dapat ditambahkan ke pesan menggunakan perintah STORE
bersama dengan atribut X-GM-LABELS
. Berikut adalah contoh transkrip yang menunjukkan penambahan label pada pesan:
a011 STORE 1 +X-GM-LABELS (foo)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante" foo))
a011 OK STORE (Success)
Atribut X-GM-LABELS
juga dapat digunakan 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: PROTOCOL AKSES PES INTERNET - VERSI 4rev1
- ID IMAP: RFC 2971: EKSTENSI ID IMAP4
- Penggunaan Khusus IMAP: RFC 6154: Ekstensi LIST IMAP untuk Kotak Surat Penggunaan Khusus