Gmail IMAP: любой способ найти все метки (папки), в которых находится конкретное сообщение?
Итак, IMAP Gmail немного "странный". Они используют папки IMAP для представления меток. Я считаю, что обычно электронная почта в IMAP может принадлежать только одной "папке", однако с Gmail сообщение электронной почты может принадлежать многим "папкам", что дает нам очень близкую функциональность к ярлыкам.
мой вопрос в том, что я пишу клиент gmail (так что такие вещи, как главные роли, удаление и архивация, работают немного более интуитивно, чем стандартный клиент imap), но я хотел бы иметь возможность отображать для данного письма, в каких папках (ярлыках) он находится.
насколько я могу судить, это непросто (мне пришлось бы перебирать каждое сообщение в каждой папке, чтобы увидеть, в каких оно).
кто-нибудь знает, есть аккуратный способ сделать это? Или я прав, предполагая, что нет легкого пути?
2 ответов
Gmail предоставляет набор расширений IMAP, чтобы позволить авторам клиентов IMAP обеспечить более Gmail-подобный опыт через IMAP. См. расширения IMAP Gmail (X-GM-EXT-1).
чтобы получить метки для конкретного сообщения, Вы можете вызвать команду IMAP FETCH с помощью X-GM-ЭТИКЕТКИ. См.доступ к ярлыкам Gmail: X-GM-LABELS
самый простой (хотя и не надежный) способ-захватить значения сообщений"Message-ID
заголовки. Затем выполните итерацию по папкам" label " и выполните ПОИСК IMAP по линии
A001 SEARCH HEADER MESSAGE-ID "your-msgid-value"
Если вы получите какие-либо результаты обратно в untagged SEARCH
ответ, сообщение имеет выбранную метку"папка".