IMAP Uzantıları

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