このドキュメントでは、Gmail が提供する IMAP 拡張機能と、デベロッパーがそれらをどのように使用できるかについて説明します。このドキュメントは、IMAP プロトコルに精通していることを前提としています。
概要
Gmail には、IMAP クライアントの作成者が IMAP を介して Gmail に近いエクスペリエンスを提供できるようにする IMAP 拡張機能が用意されています。Gmail の機能をウェブアプリやモバイルアプリに統合している場合は、RESTful Gmail API を使用することをおすすめします。
拡張機能は、標準の IMAP プロトコル経由で Gmail にアクセスする場合や、OAuth 経由で接続する場合に使用できます。
拡張機能の存在を確認する
Gmail は、CAPABILITY
コマンドへのレスポンスで拡張機能のサポートをアドバタイズします。このドキュメントで拡張機能のサポートが示されている場合、サポートされている機能のリストに X-GM-EXT-1
が含まれています。
クライアントは、IMAP ID コマンド(RFC 2971)で自己紹介し、これらの拡張機能の変更が必要になった場合に備えて、連絡先アドレスを代替として含めることを強くおすすめします。
次の例は、Gmail IMAP エンドポイントでのハンドシェイクと CAPABILITY
コマンドの使用を示しています。
* 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 コマンドの特別な用途の拡張
Gmail は、特別なフォルダに新しい属性を提供する IMAP LIST Extension for Special-Use Mailboxes をサポートしています。これらの属性により、クライアントは特別なフォルダ(\All
)。現在の特別なフォルダのリストは、[スター付き]、[重要]、[送信済み]、[下書き]、[迷惑メール]、[すべてのメール]、[ゴミ箱] です。すべての LIST
レスポンスには、これらの特別な用途の属性が含まれています。これは新しい CAPABILITY
ではなく、クライアントが ENABLEd
にする必要のあるものではありません。
LIST
の呼び出しの文字起こしの例を次に示します。
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
レスポンスは、特殊用途の標準に従って、Gmail の優先トレイ用に \Important
属性が追加されています(例: "[Gmail]/Important"
)。
XLIST のサポート終了
Gmail 固有の XLIST
コマンドは、2013 年に非推奨となり、IMAP 特別用途リスト標準に置き換えられました。XLIST
から特別用途の業界標準にできるだけ早く移行することを強くおすすめします。特殊用途の標準の属性名は以前の XLIST
属性名と類似していますが、同一ではありません。
SEARCH コマンドの拡張機能: X-GM-RAW
Gmail の完全な検索構文にアクセスできるように、Gmail には X-GM-RAW
検索属性が用意されています。SEARCH
コマンドまたは UID SEARCH
コマンドの実行時に X-GM-RAW
属性とともに渡される引数は、Gmail のウェブ インターフェースと同じように解釈されます。
X-GM-RAW
属性を使用して SEARCH
を呼び出す際の文字起こしの例を次に示します。
a005 SEARCH X-GM-RAW "has:attachment in:unread"
* SEARCH 123 12344 5992
a005 OK SEARCH (Success)
Gmail の一意のメッセージ ID(X-GM-MSGID)へのアクセス
Gmail では、メールごとに一意のメッセージ ID が付与されるため、複数のフォルダ間で一意のメッセージを識別できます。このメッセージ ID は、FETCH
コマンドの X-GM-MSGID
属性を介して取得できます。メッセージ ID は 64 ビットの符号なし整数で、ウェブ インターフェースと Gmail API で使用される ID の 16 進数文字列の 10 進数相当です。
以下は、FETCH
コマンドを使用してメッセージの X-GM-MSGID
を取得する呼び出しの文字起こしの例です。
a006 FETCH 1 (X-GM-MSGID)
* 1 FETCH (X-GM-MSGID 1278455344230334865)
a006 OK FETCH (Success)
X-GM-MSGID
属性は、SEARCH
コマンドまたは UID SEARCH
コマンドでも使用できます。Gmail のメール ID を指定して、メールのシーケンス番号または UID
を検索できます。UID SEARCH
コマンドを使用してメッセージの UID
を取得する呼び出しの例を次に示します。
a007 UID SEARCH X-GM-MSGID 1278455344230334865
* SEARCH 1
a007 OK SEARCH (Success)
Gmail スレッド ID: X-GM-THRID へのアクセス
Gmail には、Gmail ウェブ インターフェースと同じ方法でメッセージのグループを関連付けるスレッド ID があります。このスレッド ID の取得は、FETCH
コマンドの X-GM-THRID
属性を介してサポートされています。スレッド ID は 64 ビットの符号なし整数であり、ウェブ インターフェースや Gmail API で使用される 16 進数の ID に相当する 10 進数です。
以下は、FETCH
コマンドを使用して(2 つのスレッドで)複数のメッセージの X-GM-THRID
を取得する呼び出しの転写の例です。
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
属性は、SEARCH
コマンドまたは UID SEARCH
コマンドでも使用できます。特定のスレッド内のメッセージのシーケンス番号または UID
を確認できます。以下は、UID SEARCH
コマンドを使用して複数のメッセージの UID
を取得する呼び出しの音声文字変換の例です。
a009 UID SEARCH X-GM-THRID 1266894439832287888
* SEARCH 2 3 4
a009 OK Search (Success)
Gmail のラベルへのアクセス: X-GM-LABELS
Gmail では、IMAP の目的においてラベルはフォルダとして扱われます。そのため、ラベルは、フォルダに対して動作する標準の IMAP コマンド(CREATE
、RENAME
、DELETE
)を使用して変更できます。システムラベル(Gmail によって作成されたラベル)は予約済みで、ラベルのリストでは「[Gmail]」または「[GoogleMail]」という接頭辞が付いています。XLIST
コマンドを使用して、メールボックスのラベルのリスト全体を取得します。
特定のメッセージのラベルは、FETCH
コマンドと X-GM-LABELS
属性を使用して取得できます。この属性は、必要に応じて UTF-7 でエンコードされた ASTRING
のリストとして返されます。ASTRING
は、RFC で定義されているアトムまたは文字列です。
次の例は、FETCH
コマンドを使用して複数のメッセージの X-GM-LABELS
を取得する呼び出しの文字起こしです。
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)
ラベルは、X-GM-LABELS
属性と組み合わせて STORE
コマンドを使用してメッセージに追加できます。以下に、メールへのラベルの追加を示す文字起こしの例を示します。
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
属性は、SEARCH
コマンドまたは UID SEARCH
コマンドでも使用できます。特定のラベルを持つフォルダ内のすべてのメッセージのシーケンス番号または UID
を検索できます。次の例は、SEARCH
コマンドを使用して複数のメッセージのシーケンス番号を取得する呼び出しのトランスクリプトです。
a012 SEARCH X-GM-LABELS foo
* SEARCH 1 2
a012 OK SEARCH (Success)
参照
- IMAP: RFC 3501: インターネット メッセージ アクセス プロトコル - バージョン 4rev1
- IMAP ID: RFC 2971: IMAP4 ID EXTENSION
- IMAP の特別な用途: RFC 6154: 特別な用途のメールボックス向けの IMAP LIST 拡張機能