Domanda

Sto usando imaplib di lavorare con imap in python, tuttavia sembra che non dispone di mezzi per analizzare i dettagli di risposte IMAP. Ad esempio, interrogazione come:

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

dove num è il numero del messaggio, per un server di posta elettronica può produrre (per esempio):

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

e per un altro:

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

Come si vede, i dettagli del messaggio sono diverse e UID è ancora in elemento diverso lì. Quindi la domanda è - c'è qualche libreria che permettesse di ordinare automaticamente fuori e astratti i dettagli di ciò particolare server di posta fa?

È stato utile?

Soluzione

di Doug Hellman Python modulo della voce Settimana per imaplib è abbastanza ampio tutorial sul soggetto, ma è lontano a lungo per riprodurre qui.

Si potrebbe desiderare di utilizzare una libreria di livello superiore come IMAPClient per nascondere alcuni dei dettagli del protocollo IMAP .

Altri suggerimenti

Guardate Imbox, probabilmente troverete quello che state cercando https://pypi.org/project / imbox /

È possibile utilizzare il pacchetto 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'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top