Вопрос

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

   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'), ')'])

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

Это было полезно?

Решение

Даг Хеллман Python Module of недели вход для imaplib является довольно обширным учебником по этому вопросу, но здесь далеко, чтобы воспроизводить здесь.

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

Другие советы

Посмотрите на Imbox, вы, вероятно, найдете то, что ищете https://pypi.org/project/imbox/

Вы можете использовать пакет imap_tools:https://pypi.org/project/imap-tools/

for message in mailbox.fetch():
    message.uid          # str or None, '123'
    message.subject      # str, 'some subject'
    message.from_        # str, 'sender@ya.ru'
    message.to           # tuple, ('iam@goo.ru', 'friend@ya.ru', )
    message.cc           # tuple, ('cc@mail.ru', )
    message.bcc          # tuple, ('bcc@mail.ru', )
    message.date         # datetime.datetime, 1900-1-1 for unparsed, may be naive or with tzinfo
    message.text         # str, 'hi'
    message.html         # str, '<b>hi</b>'
    message.flags        # tuple, ('SEEN', 'FLAGGED', 'ENCRYPTED')
    message.headers      # dict, {'Received': ('from 1.m.net', 'from 2.m.net'), 'AntiVirus-Status': ('Clean',)}
    message.attachments  # [(str, bytes)], 'cat.jpg', b'\xff\xd8\xff\xe0\'
    message.obj          # original email.message.Message object
    message.from_values  # dict or None, {'email': 'sender@ya.ru', 'name': 'Ivan', 'full': 'Ivan <sender@ya.ru>'}
    message.to_values    # tuple, ({'email': '', 'name': '', 'full': ''},)
    message.cc_values    # tuple, ({'email': '', 'name': '', 'full': ''},)
    message.bcc_values   # tuple, ({'email': '', 'name': '', 'full': ''},)
    message.date_str     # original date str, 'Tue, 03 Jan 2017 22:26:59 +0500'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top