Bu dokümanda, Gmail tarafından sağlanan IMAP uzantıları ve geliştiriciler tarafından nasıl kullanılabilecekleri açıklanmaktadır. Bu dokümanda, IMAP protokolü hakkında bilgi sahibi olduğunuz varsayılmaktadır.
Genel Bakış
Gmail, IMAP erişimi istemcilerinin yazarlarının IMAP üzerinden daha Gmail'e benzer bir deneyim sağlamalarına olanak tanımak için bir dizi IMAP erişimi 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şirken veya OAuth üzerinden bağlanırken kullanabilirsiniz.
Uzantıların olup olmadığını kontrol etme
Gmail, CAPABILITY
komutuna verdiği yanıtta uzantı desteğinin reklamını yapar. Bu dokümanda uzantıların desteklenmesi, desteklenen özellikler listesinde X-GM-EXT-1
işaretinin bulunmasıyla gösterilir.
Müşterilerin, IMAP kimliği komutuyla (RFC 2971) kendilerini duyurmaları ve bu uzantılarda değişiklik yapılması gerektiğinde yedek olarak bir iletişim adresi eklemeleri önemle tavsiye edilir.
Aşağıda, Gmail IMAP uç noktasında CAPABILITY
komutunun kullanımı ve örnek bir el sıkışma gösterilmektedir:
* 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üşterinin hangi klasörlerin özel olduğunu bilmesini sağlar (ör. \All
). Özel klasörlerin mevcut listesi şunlardır: Yıldızlı, Önemli, Gönderilenler, Taslaklar, Spam, Tüm Postalar ve Çöp Kutusu. Tüm LIST
yanıtları, bu Özel Kullanım özelliklerini içeriyor. Bu, yeni bir CAPABILITY
veya müşteriler tarafından ENABLEd
olması gereken bir özellik değil.
Aşağıda, LIST
ile yapılan bir 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 ek \Important
özelliğiyle Özel Kullanım standardını uygular.
XLIST desteği sonlandırıldı
Gmail'e özgü XLIST
komutu, 2013'te IMAP Özel Kullanım Listesi Standardı'nın lehine kullanımdan kaldırıldı. Müşterilerin, en kısa sürede XLIST
ürününden Özel Kullanım sektör standardına geçmeleri önemle tavsiye edilir. Özel kullanıma yönelik 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 arama söz diziminin tamamına erişim sağlamak için Gmail, X-GM-RAW
arama özelliğini sağlar. 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ündekiyle aynı şekilde yorumlanır.
Aşağıda, X-GM-RAW
özelliğini kullanarak SEARCH
adresine 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 benzersiz ileti kimliğine erişim: X-GM-MSGID
Gmail, benzersiz bir ileti birden fazla klasörde tanımlanabilmesi için 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 işaretsiz bir tam sayıdır ve web arayüzünde ve Gmail API'de kullanılan kimlik onaltılık dizeninin 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 transkripti 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ği verilen bir iletideki sıra numaralarını veya UID
değerini bulmak için SEARCH
veya UID SEARCH
komutlarında da kullanılabilir. Aşağıda, UID SEARCH
komutunu kullanarak bir mesajın UID
değerini almak için yapılan bir çağrının transkript örneği 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ündekiyle aynı şekilde 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. Mesaj dizisi kimliği, 64 bitlik işaretsiz bir tam sayıdır ve web arayüzünde ve Gmail API'de kullanılan kimlik onaltılık dizenin ondalık eşdeğeridir.
Aşağıda, FETCH
komutuyla birkaç iletideki (iki ileti dizisinde) X-GM-THRID
değerini almak için yapılan bir çağrının ö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)
X-GM-THRID
özelliği, belirli bir ileti dizisindeki mesajların sıra numaralarını veya UID
değerlerini bulmak için SEARCH
veya UID SEARCH
komutlarında da kullanılabilir. Aşağıda, UID SEARCH
komutunu kullanarak ç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, IMAP amaçları doğrultusunda 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 sistem etiketleri, ayrılmış etiketlerdir ve etiket listesinde "[Gmail]" veya "[GoogleMail]" ön ekiyle başlar. Bir posta kutusunun etiket listesinin tamamını almak için XLIST
komutunu kullanın.
Belirli bir ileti için etiketler, FETCH
komutuyla X-GM-LABELS
özelliği kullanılarak alınabilir. Özellik, uygun şekilde UTF-7 olarak kodlanmış ASTRING
değerlerinin listesi olarak döndürülür. ASTRING
, RFC tarafından tanımlanan bir atom veya dize'dir.
Aşağıda, FETCH
komutuyla birkaç mesajın X-GM-LABELS
değerini almak için yapılan bir çağrının ö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)
STORE
komutu X-GM-LABELS
özelliğiyle birlikte kullanılarak bir mesaja etiket eklenebilir. Aşağıda, bir mesaja 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
veya UID SEARCH
komutlarında da kullanılabilir. Aşağıda, SEARCH
komutunu kullanarak birkaç mesajı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 KİMLİĞİ UZANTISI
- Özel Kullanım Amaçlı IMAP: RFC 6154: Özel Kullanım Amaçlı Posta Kutuları İçin IMAP LIST Uzantısı