Gmail IMAP: есть ли способ найти все ярлыки (папки), в которых находится конкретное сообщение? - PullRequest
7 голосов
/ 13 ноября 2010

Итак, IMAP в Gmail немного «странный».Они используют папки IMAP для представления ярлыков.Обычно я считаю, что электронная почта в IMAP может принадлежать только одной «Папке», однако в Gmail электронное письмо может принадлежать многим «папкам», что дает нам очень близкие функциональные возможности к ярлыкам.

Мой вопрос заключается в том,Я пишу Gmail-клиент (чтобы такие вещи, как «Starring», «Удаление» и «Архивация», работали немного более интуитивно, чем стандартный клиент IMAP), но я хотел бы иметь возможность отображать для данного письма, какие папки (метки) егонаходится в.

Насколько я могу судить, это нелегко (мне нужно было бы просмотреть каждое сообщение в каждой папке, чтобы увидеть, в каком оно находится).

Кто-нибудь знает аккуратный способ сделать это?Или я прав, если предположить, что простого пути нет?

Ответы [ 2 ]

7 голосов
/ 07 сентября 2011

Gmail предоставляет набор расширений IMAP, позволяющих авторам клиентов IMAP предоставлять более похожую на Gmail работу через IMAP.См. Расширения Gmail IMAP (X-GM-EXT-1) .

Чтобы получить метки для конкретного сообщения, вы можете вызвать команду IMAP FETCH с помощью X-GM-ЭТИКЕТКА атрибут.См. Доступ к ярлыкам Gmail: X-GM-LABELS

0 голосов
/ 16 января 2011

Самый простой (хотя и не защищенный от ошибок) способ - получить значения заголовков Message-ID сообщений. Затем выполните итерации по папкам «label» и выполните ПОИСК IMAP в соответствии с

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

Если вы получили какие-либо результаты в ответе без тега SEARCH, сообщение имеет метку выбранной «папки».

...