2010-12-16 1 views
7

Я использую imaplib для работы с imap в python, однако похоже, что у него нет средств для анализа деталей ответов IMAP. Например, запрос, как:Parsing IMAP-ответы в python

msgdata = connection.fetch(num, "(BODY.PEEK[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] UID)") 

, где num это номер сообщения, для одного почтового сервера может привести (например):

('OK', [('1234 (BODY[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] {123}', 'From: ...etc headers'), ' UID 3456)']) 

и для другого:

('OK', [('1234 (UID 3456 BODY[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] {123}', 'From: ...etc headers'), ')']) 

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

ответ

6

Doug Hellman's Python Module of the Week entry for imaplib - довольно обширное учебное пособие по этому предмету, но далеко не так долго воспроизводить здесь.

Возможно, вы захотите использовать библиотеку более высокого уровня, такую ​​как IMAPClient, чтобы скрыть некоторые детали протокола IMAP.

+0

К сожалению, учебник Doug's скользит по теме разбора более сложных ответов fetch(). Спасибо за ссылку на IMAPClient, я проверю ее. – StasM 2010-12-17 00:35:23