Question

J'utilise imaplib à travailler avec imap en python, mais il semble que cela ne dispose pas de moyens pour analyser les détails des réponses IMAP. Par exemple, la requête comme:

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

num est le numéro de message, pour un serveur de messagerie peut produire (par exemple):

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

et pour une autre:

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

Comme vous le voyez, les détails du message sont différents et UID est même dans l'élément différent là-bas. La question est - est-il une bibliothèque qui permettent de trier automatiquement et en résumé les détails de ce serveur de messagerie particulier fait?

Était-ce utile?

La solution

Doug Hellman Python Module de l'entrée Semaine imaplib est un tutoriel assez étendu sur la sujet, mais est loin de longtemps pour se reproduire ici.

Vous pouvez utiliser une bibliothèque de haut niveau comme IMAPClient pour cacher certains détails du protocole IMAP .

Autres conseils

Regardez Imbox, vous trouverez probablement ce que vous êtes à la recherche d' https://pypi.org/project / imbox /

Vous pouvez utiliser paquet 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'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top