Bu dokümanda, Gmail tarafından sağlanan IMAP uzantıları ve bunların geliştiriciler tarafından nasıl kullanılabileceği açıklanmaktadır. Bu belge IMAP protokolü hakkında bilgi sahibi olduğunuzu varsayar.
Genel bakış
Gmail, IMAP istemcilerinin yazarlarının IMAP aracılığıyla Gmail benzeri bir deneyim sunmasını sağlamak için bir dizi IMAP erişimi uzantısı sunar. Gmail özelliklerini web veya mobil uygulamalarına entegre eden geliştiriciler bunun yerine RESTful Gmail API'yi kullanmak isteyebilir.
Uzantılar, Gmail'e standart IMAP protokolüyle erişilirken veya OAuth aracılığıyla bağlanırken kullanılabilir.
Uzantıların olup olmadığı kontrol ediliyor
Gmail, CAPABILITY
komutuna verdiği yanıtta uzantı desteğinin reklamını yapar. Bu dokümandaki uzantıların desteği, desteklenen özellikler listesinde X-GM-EXT-1
'nin varlığıyla belirtilmiştir.
İstemcilerin, kendilerini IMAP kimliği komutuyla (RFC 2971) duyurarak bu uzantılarda değişiklik yapılması gerekebileceği ihtimaline karşı yedek olarak bir iletişim adresi eklemeleri önerilir.
Aşağıda, el sıkışma ve Gmail IMAP uç noktasında CAPABILITY
komutunun kullanımıyla ilgili örnek verilmiştir:
* 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 komutunun Özel Kullanım Uzantısı
Gmail, özel klasörler için yeni özellikler sağlayan Özel Kullanım Posta Kutuları için IMAP LİSTESİ Uzantısını destekler. Bu özellikler, müşteriye hangi klasörlerin özel olduğunu bilmesini sağlar (ör. \All
). Özel klasörlerin geçerli listesi şunlardan oluşur: Yıldızlı, Önemli, Gönderilmiş Öğeler, Taslaklar, Spam, Tüm Postalar ve Çöp Kutusu. Tüm LIST
yanıtları bu Özel Kullanım özelliklerini içerir. Bu yeni bir CAPABILITY
veya müşteriler tarafından ENABLEd
olması gereken bir şey değildir.
Aşağıda, LIST
numaralı telefona yapılan aramanın transkript örneği verilmiştir:
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
Yanıt, Gmail'in Öncelikli E-postalar'a (ör. "[Gmail]/Important"
) eklenen \Important
özelliğine ek olarak Özel Kullanım standardına uygun
XLIST kullanımdan kaldırıldı
Gmail'e özgü XLIST
komutu 2013'te kullanımdan kaldırılmış ve yerini IMAP Özel Kullanım Listesi Standardı almıştır. Müşterilerin en kısa sürede XLIST
ürününden Özel Kullanım endüstri standardına geçmeleri önemle tavsiye edilir. Özel Kullanım standart özelliği adlarının eski XLIST
özellik adlarına benzer olduğunu ancak onlarla aynı olmadığını unutmayın.
SEARCH komutunun uzantısı: X-GM-RAW
Gmail, tam Gmail arama söz dizimine erişim sağlamak için X-GM-RAW
arama özelliğini sağlar. SEARCH
veya UID SEARCH
komutlarını yürütürken X-GM-RAW
özelliği ile birlikte iletilen bağımsız değişkenler, Gmail web arayüzünde olduğu gibi yorumlanır.
Aşağıda, X-GM-RAW
özelliği kullanılan SEARCH
numaralı telefona yapılan bir aramanın transkript örneği verilmiştir:
a005 SEARCH X-GM-RAW "has:attachment in:unread"
* SEARCH 123 12344 5992
a005 OK SEARCH (Success)
Gmail'in benzersiz ileti kimliğine erişim: X-GM-MSGID
Gmail, benzersiz bir iletinin birden fazla klasörde tanımlanabilmesini sağlamak üzere her e-posta için benzersiz bir ileti kimliği sağlar. Bu mesaj kimliğinin alınması, FETCH
komutundaki X-GM-MSGID
özelliği aracılığıyla desteklenir. İleti kimliği 64 bitlik imzalanmamış bir tam sayıdır ve web arayüzünde ve Gmail API'de kullanılan kimlik onaltılık dizesinin ondalık eşdeğeridir.
Aşağıda, FETCH
komutunu içeren bir mesajın X-GM-MSGID
bilgisini almak için yapılan aramanın transkript örneği verilmiştir:
a006 FETCH 1 (X-GM-MSGID)
* 1 FETCH (X-GM-MSGID 1278455344230334865)
a006 OK FETCH (Success)
X-GM-MSGID
özelliği, Gmail'in ileti kimliğine sahip bir iletinin sıra numaralarını veya UID
değerini bulmak için SEARCH
ya da UID SEARCH
komutlarında da kullanılabilir. Aşağıda, UID SEARCH
komutunu kullanarak bir mesajın UID
bilgisini almak için yapılan çağrının örnek bir transkriptini görebilirsiniz:
a007 UID SEARCH X-GM-MSGID 1278455344230334865
* SEARCH 1
a007 OK SEARCH (Success)
Şu Gmail ileti dizisi kimliğine erişim: X-GM-THRID
Gmail, Gmail web arayüzünde olduğu gibi ileti gruplarını ilişkilendirmek için bir ileti dizisi kimliği sağlar. Bu iş parçacığı kimliğinin alınması, FETCH
komutundaki X-GM-THRID
özelliği aracılığıyla desteklenir. İleti dizisi kimliği 64 bitlik imzalanmamış bir tam sayıdır ve web arayüzünde ve Gmail API'de kullanılan kimlik onaltılık dizesinin ondalık eşdeğeridir.
Aşağıda, FETCH
komutuyla çeşitli mesajlardan (iki mesaj dizisinde) X-GM-THRID
almak için yapılan bir aramanın transkript örneği verilmiştir:
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)
X-GM-THRID
özelliği, belirli bir ileti dizisindeki mesajların sıra numaralarını veya UID
'lerini bulmak için SEARCH
ya da UID SEARCH
komutlarında da kullanılabilir. Aşağıda, UID SEARCH
komutunu kullanarak çeşitli mesajların UID
'lerini almak için yapılan bir aramanın transkript örneği verilmiştir:
a009 UID SEARCH X-GM-THRID 1266894439832287888
* SEARCH 2 3 4
a009 OK Search (Success)
Gmail etiketlerine erişim: X-GM-LABELS
Gmail, IMAP açısından etiketleri klasör olarak ele alır. Bu nedenle etiketler, klasörler üzerinde işlem yapan standart IMAP komutları (CREATE
, RENAME
ve DELETE
) kullanılarak değiştirilebilir. Gmail tarafından oluşturulan etiketler olan sistem etiketleri ayrılır ve etiketler listesinde "[Gmail]" veya "[GoogleMail]" ile başlar. Bir posta kutusuyla ilgili etiketlerin tam listesini almak için XLIST
komutunu kullanın.
Belirli bir iletinin etiketleri, FETCH
komutuyla X-GM-LABELS
özelliği kullanılarak alınabilir. Özellik, uygun şekilde UTF-7 olarak kodlanmış ASTRING
listesi olarak döndürülür. ASTRING
, RFC tarafından tanımlandığı şekliyle bir atom veya dizedir.
Aşağıda, FETCH
komutuyla çeşitli mesajlardan X-GM-LABELS
listesi almak için yapılan bir aramanın transkript örneği verilmiştir:
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)
İletilere X-GM-LABELS
özelliğiyle birlikte STORE
komutu kullanılarak etiket eklenebilir. Aşağıda, bir iletiye etiket eklendiğini gösteren örnek bir konuşma metni verilmiştir:
a011 STORE 1 +X-GM-LABELS (foo)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante" foo))
a011 OK STORE (Success)
X-GM-LABELS
özelliği, belirli bir etikete sahip klasördeki tüm mesajların sıra numaralarını veya UID
'lerini bulmak için SEARCH
veya UID SEARCH
komutlarında da kullanılabilir. Aşağıda, SEARCH
komutu kullanılarak çeşitli mesajların sıra numaralarını almak için yapılan bir aramanın transkript örneği verilmiştir:
a012 SEARCH X-GM-LABELS foo
* SEARCH 1 2
a012 OK SEARCH (Success)
Referanslar
- IMAP: RFC 3501: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
- IMAP Kimliği: RFC 2971: IMAP4 ID EXTENSION
- IMAP Özel Kullanım: RFC 6154: Özel Kullanım Posta Kutuları için IMAP LIST Uzantısı