7

そのため、Gmail の IMAP は少し「奇妙」です。IMAP フォルダを使用してラベルを表します。通常、IMAP の電子メールは 1 つの「フォルダ」にのみ属することができると思いますが、Gmail では、電子メール メッセージは多くの「フォルダ」に属することができるため、ラベルに非常に近い機能が得られます。

私の質問は、私は gmail クライアントを作成している (スター付け、削除、アーカイブなどの作業が標準の imap クライアントよりも少し直感的になるようにするため) ですが、特定のメールに対してどのフォルダーを表示できるようにしたいですか? (ラベル) 入っています。

私が知る限り、これは簡単ではありません (どのフォルダーにメッセージがあるかを確認するには、すべてのフォルダー内のすべてのメッセージをループ処理する必要があります)。

これを行うためのきちんとした方法を知っている人はいますか?それとも、簡単な方法はないと仮定するのは正しいですか?

4

2 に答える 2

7

Gmail には一連の IMAP 拡張機能が用意されており、IMAP クライアントの作成者が IMAP を通じてより Gmail に似たエクスペリエンスを提供できるようになっています。Gmail IMAP 拡張機能 (X-GM-EXT-1)を参照してください。

特定のメッセージのラベルを取得するには、X-GM-LABELS属性を指定して IMAP FETCH コマンドを呼び出すことができます。Gmail ラベルへのアクセスを参照してください: X-GM-LABELS

于 2011-09-06T21:26:16.233 に答える
0

最も簡単な (確実ではありませんが) 方法は、メッセージのMessage-IDヘッダーの値を取得することです。次に、「ラベル」フォルダーを繰り返し処理し、次の行に沿ってIMAP SEARCHを実行します。

A001 SEARCH HEADER MESSAGE-ID "your-msgid-value"

タグ付けされていないSEARCH応答で結果が返された場合、メッセージには選択された「フォルダー」のラベルが付いています。

于 2011-01-16T12:12:47.200 に答える