Пользовательская маркировка сообщений в IMAP через python - PullRequest
1 голос
/ 28 мая 2011

Есть ли способ пометить сообщения в папке IMAP с помощью обычного тега Python?как почта Томса, дерьмо Джона и т.д. и т.п.?

1 Ответ

4 голосов
/ 28 мая 2011

Сервер Cyrus IMAP поддерживает пользовательские флаги сообщений (такие как теги, метки, ключевые слова), и вы можете использовать почтовый клиент Alpine для экспериментов с метками.В Alpine выберите (S)etup -> (C)onfig, прокрутите вниз до раздела keywords и введите свой список желаемых имен флагов.

Чтобы установить флаги сообщений из Python, вы можете использовать стандартный модуль imaplib.Ниже приведен пример установки флагов для сообщения:

import imaplib
im = imaplib.IMAP4(hostname)
im.login(user, password)
im.select('INBOX')

# you can use im.search() to obtain message ids
msg_ids = '1, 4, 7'
labels = ['foo', 'bar', 'baz']

# add the flags to the message
im.store(msg_ids, '+FLAGS', '(%s)' % ' '.join(labels))

# fetch and print to verify the flags
print im.fetch(ids, '(FLAGS)')

im.close()
im.logout()

Следует иметь в виду, что флаги, отправляемые на сервер, не содержат пробелов.Если вы отправите +FLAGS (foo bar) на сервер, это установит два флага foo и bar.Такие клиенты, как Alpine, позволят вам вводить флаги с пробелами в них, но будут отправлять на сервер только последнюю незаполненную часть - он воспринимает это как уникальный идентификатор.Если вы укажете флаг abc 123, он установит 123 в сообщении и отобразит abc в представлении сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...