Bu belgede, Gmail'in sağladığı IMAP uzantıları ve geliştiricilerin bunları nasıl kullanabileceğ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.
Gmail'e standart IMAP protokolü üzerinden erişirken veya OAuth ile bağlanırken uzantıları kullanabilirsiniz.
Uzantıların varlığını kontrol etme
Gmail, CAPABILITY komutuna verdiği yanıtta uzantı desteğini duyurur. Desteklenen özellikler listesinde X-GM-EXT-1 simgesinin bulunması, bu belgede açıklanan uzantıların desteklendiğini gösterir.
İstemcilerin IMAP ID
komutuyla (RFC 2971) kendilerini duyurmalarını ve bu uzantılarda değişiklik yapılması gerektiğinde yedek olarak bir iletişim adresi eklemelerini önemle tavsiye ederiz.
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 bildirir (ö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üşterilerin etkinleştirmesi gereken bir özellik değildir.
Aşağıda, LIST ile yapılan bir görüşmenin ö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, Özel Kullanım standardına uygundur ve Gmail'in Öncelikli E-postalar özelliği için ek bir \Important
özelliği eklenmiştir ("[Gmail]/Important").
XLIST desteği sonlandırıldı
Gmail'e özgü XLIST komutu, 2013'te IMAP Special-Use List Standard lehine kullanımdan kaldırıldı.
Müşterilerin en kısa sürede XLIST'dan Özel Kullanım sektör standardına geçmelerini önemle tavsiye ederiz. Özel kullanım standardı ö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 aktarılan bağımsız değişkenler, Gmail web arayüzündeki gibi yorumlanır.
Aşağıda, SEARCH özelliğini kullanarak X-GM-RAW numarasına yapılan bir aramanın ö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, birden fazla klasördeki benzersiz iletileri tanımlayabilirsiniz. Bu ileti kimliğini, FETCH komutundaki X-GM-MSGID özelliğini kullanarak alabilirsiniz. İleti kimliği, 64 bit işaretsiz 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 bir mesajın X-GM-MSGID değerini almak için yapılan aramanın örnek transkripti 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 SEARCH ya da UID SEARCH komutlarında X-GM-MSGID özniteliğini de kullanabilirsiniz. Aşağıda, UID SEARCH komutu kullanılarak bir mesajın UID değerini almak için yapılan ç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ğini, FETCH komutundaki X-GM-THRID özelliğini kullanarak alabilirsiniz. İleti dizisi kimliği, 64 bit işaretsiz 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 birkaç mesajın (iki ileti dizisinde) X-GM-THRID değerini almak için yapılan bir çağrının örnek dökümü 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 SEARCH ya da UID SEARCH komutlarındaki X-GM-THRID özelliğini de kullanabilirsiniz.
Aşağıda, UID SEARCH komutu kullanılarak birkaç mesajın UIDs'ini
almak için yapılan bir aramanı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,
klasörler üzerinde işlem yapan standart IMAP komutlarını kullanarak etiketleri değiştirebilirsiniz:
CREATE, RENAME ve DELETE. Gmail tarafından oluşturulan etiketler olan sistem etiketleri ayrılmıştır ve etiket listesinde "[Gmail]" veya "[GoogleMail]" ön ekiyle gösterilir. Bir posta kutusunun etiketlerinin tamamını almak için LIST komutunu kullanın.
Belirli bir iletinin etiketlerini X-GM-LABELS
özelliğini FETCH komutuyla kullanarak alabilirsiniz. Ö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 aramanı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 özelliğiyle birlikte X-GM-LABELS komutunu kullanarak iletilere etiket ekleyebilirsiniz. Aşağıda, iletiye nasıl etiket ekleneceğini gösteren bir örnek 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)
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 X-GM-LABELS özelliğini de kullanabilirsiniz. Aşağıda, SEARCH komutunu kullanarak birkaç iletinin 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 kimliği: RFC 2971: IMAP4 ID EXTENSION
- IMAP Special-Use: RFC 6154: IMAP LIST Extension for Special-Use Mailboxes (Özel Kullanım Posta Kutuları İçin IMAP LIST Uzantısı)