2011-04-12 1 views
1

Я хочу, чтобы переместить сообщение IMAP от -Входящих INBOX/Архив с использованием imapclient библиотеки питона, который я делаю в основном так:Как я могу однозначно идентифицировать IMAP-сообщение после его копирования?

def archive_message(imap, message_id): 
    imap.copy([message_id], getOptions().imap_archive_folder) 
    imap.delete_messages([message_id]) 

Однако это теряет свою ссылку на сообщение. То, что я хочу сделать, это хранить идентификатор сообщения, которое позволит мне посмотреть сообщение позже, используя что-то вроде этого:

def retrieve_message(imap, MYSTICAL_STORED_ID): 
    imap.select_folder(getOptions().imap_archive_folder) 
    return imap.fetch([MYSTICAL_STORED_ID], parts=["RFC822"]) 

Что ID я должен/можно использовать для этого, и как бы Я использую эту часть?

+0

В большинстве случаев сервер будет поддерживать расширение 'UIDPLUS' и, следовательно, новый UID копии в удаленной папке является частью возвращаемого значения из вашего вызова на' imap.copy'. – dkarp

ответ

2

Значение в заголовке Message-Id должно быть уникальным для каждого сообщения электронной почты.

+0

Итак, если я выбрал папку, это достаточно, чтобы идентифицировать сообщение для извлечения? –

+0

Вы можете * сканировать папку для соответствующего сообщения и получить его индекс; На самом деле я не знаю IMAP. –

+0

Проблема в том, что вы можете иметь несколько копий одного сообщения в папке. (См., Что ** imap.copy **? Вам не нужно следовать ему с ** imap.delete_messages ** ...) – dkarp