Bu belgede, Gmail tarafından sağlanan IMAP uzantıları ve bunların geliştiriciler tarafından nasıl kullanılabileceği açıklanmaktadır. Bu belgede, IMAP protokolü hakkında bilgi sahibi olduğunuz varsayılır.
Genel Bakış
Gmail, IMAP istemcilerinin yazarlarına IMAP üzerinden Gmail'e daha benzer bir deneyim sunmalarını sağlamak için bir dizi IMAP uzantısı sağlar. 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ü üzerinden erişilirken veya OAuth aracılığıyla bağlanılırken kullanılabilir.
Uzantıların varlığını kontrol etme
Gmail, CAPABILITY
komutuna verdiği yanıtta uzantı desteğini duyurur. Bu dokümanda uzantıların desteği, desteklenen özellikler listesinde X-GM-EXT-1
simgesinin bulunmasıyla belirtilir.
İstemcilerin, IMAP ID komutu (RFC 2971) ile kendilerini bildirmeleri ve bu uzantılarda değişiklik yapılması gerektiği durumlarda yedek olarak bir iletişim adresi eklemeleri önemle tavsiye edilir.
Aşağıda, Gmail IMAP uç noktasında CAPABILITY
komutunun kullanıldığı bir örnek el sıkışma işlemi 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 amaçlı uzantısı
Gmail, özel klasörler için yeni özellikler sağlayan IMAP LIST Extension for Special-Use Mailboxes'ı destekler. Bu özellikler, istemciye hangi klasörlerin özel olduğunu (ör. \All
). Mevcut özel klasörler 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
değildir veya müşteriler tarafından ENABLEd
yapılması gerekmez.
Aşağıda, LIST
'a yapılan bir aramanın örnek transkripti 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 özelliği için ek bir \Important
özelliği (ör. "[Gmail]/Important"
) eklenerek Özel Kullanım standardına uygundur.
XLIST desteği sonlandırıldı
Gmail'e özgü XLIST
komutunun desteği, 2013 yılında IMAP Special-Use List Standard lehine sonlandırıldı. Müşterilerin en kısa sürede XLIST
'dan Özel Kullanım endüstri standardına geçmeleri önemle tavsiye edilir. Özel kullanım standart özellik adlarının, eski XLIST
özellik adlarına benzer ancak 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 sunar. SEARCH
veya UID SEARCH
komutları yürütülürken X-GM-RAW
özelliğiyle birlikte iletilen bağımsız değişkenler, Gmail web arayüzündeki gibi yorumlanır.
Aşağıda, X-GM-RAW
özelliği kullanılarak SEARCH
ile yapılan bir görüşmenin örnek transkripti 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 (X-GM-MSGID) erişim
Gmail, her e-posta için benzersiz bir ileti kimliği sağlar. Böylece, benzersiz bir ileti birden fazla klasörde tanımlanabilir. Bu ileti kimliğinin alınması, FETCH
komutundaki X-GM-MSGID
özelliği aracılığıyla desteklenir. İleti kimliği, 64 bitlik işaretsiz bir tam sayıdır ve web arayüzünde ile Gmail API'de kullanılan kimlik onaltılık dizesinin ondalık eşdeğeridir.
Aşağıda, FETCH
komutuyla bir mesajın X-GM-MSGID
değerini almak için yapılan çağrının örnek dökümü verilmiştir:
a006 FETCH 1 (X-GM-MSGID)
* 1 FETCH (X-GM-MSGID 1278455344230334865)
a006 OK FETCH (Success)
Gmail'in ileti kimliği verilen bir iletinin sıra numaralarını veya UID
değerini bulmak için X-GM-MSGID
özelliği SEARCH
veya UID SEARCH
komutlarında da kullanılabilir. Aşağıda, UID SEARCH
komutu kullanılarak bir mesajın UID
değerini almak için yapılan bir çağrının örnek transkripti verilmiştir:
a007 UID SEARCH X-GM-MSGID 1278455344230334865
* SEARCH 1
a007 OK SEARCH (Success)
Gmail ileti dizisi kimliğine erişim: X-GM-THRID
Gmail, ileti gruplarını Gmail web arayüzündeki gibi ilişkilendirmek için bir ileti dizisi kimliği sağlar. Bu ileti dizisi kimliğinin alınması, FETCH
komutundaki X-GM-THRID
özelliği aracılığıyla desteklenir. İş parçacığı kimliği, 64 bitlik işaretsiz bir tam sayıdır ve web arayüzünde ile Gmail API'de kullanılan kimlik onaltılık dizesinin ondalık eşdeğeridir.
Aşağıda, FETCH
komutuyla birkaç mesajın (iki ileti dizisinde) X-GM-THRID
değerini almak için yapılan bir görüşmenin örnek transkripti 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)
Belirli bir ileti dizisindeki iletilerin sıra numaralarını veya UID
'lerini bulmak için X-GM-THRID
özelliği, SEARCH
veya UID SEARCH
komutlarında da kullanılabilir. Aşağıda, UID SEARCH
komutu kullanılarak çeşitli mesajların UID
değerlerini almak için yapılan bir çağrının örnek transkripti 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, etiketleri IMAP amacıyla klasör olarak değerlendirir. 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 sistem etiketleri ayrılmıştır ve etiket listesinde "[Gmail]" veya "[GoogleMail]" ile başlar. Bir posta kutusunun etiketlerinin tamamını almak için XLIST
komutunu kullanın.
Belirli bir iletiye ait etiketler, X-GM-LABELS
özelliği FETCH
komutuyla kullanılarak alınabilir. Özellik, uygun şekilde UTF-7 olarak kodlanmış ASTRING
listesi olarak döndürülür. ASTRING
, RFC tarafından tanımlanan bir atom veya dizedir.
Aşağıda, FETCH
komutuyla birden fazla mesajın X-GM-LABELS
değerini almak için yapılan bir görüşmenin örnek transkripti 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)
Etiketler, X-GM-LABELS
özelliğiyle birlikte STORE
komutu kullanılarak bir mesaja eklenebilir. Aşağıda, bir iletiye etiket eklenmesini gösteren örnek bir transkript 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 iletilerin sıra numaralarını veya UID
'lerini bulmak için SEARCH
ya da UID SEARCH
komutlarında da kullanılabilir. Aşağıda, SEARCH
komutu kullanılarak birkaç mesajın sıra numaralarını almak için yapılan bir aramanın örnek transkripti 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 ID: RFC 2971: IMAP4 ID EXTENSION
- IMAP Special-Use: RFC 6154: IMAP LIST Extension for Special-Use Mailboxes (Özel Kullanım Amaçlı Posta Kutuları İçin IMAP LIST Uzantısı)