I am using imaplib to work with imap in python, however it looks like it doesn't have means to parse the details of IMAP responses. For example, query like:
msgdata = connection.fetch(num, "(BODY.PEEK[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] UID)")
where num
is the message number, for one mail server may produce (for example):
('OK', [('1234 (BODY[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] {123}', 'From: ...etc headers'), ' UID 3456)'])
and for another:
('OK', [('1234 (UID 3456 BODY[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] {123}', 'From: ...etc headers'), ')'])
As you see, the message details are different and UID is even in different element there. So the question is - is there some library that would allow to automatically sort it out and abstract the details of what particular mail server does?
Doug Hellman's Python Module of the Week entry for imaplib is a fairly extensive tutorial on the subject, but is far to long to reproduce here.
You might want to use a higher level library like IMAPClient to hide some of the details of the IMAP protocol.
High level IMAP lib may be useful: https://github.com/ikvk/imap_tools
from imap_tools import MailBox
# get list of email subjects from INBOX folder
with MailBox('imap.mail.com').login('[email protected]', 'password', 'INBOX') as mailbox:
data = [(msg.uid, msg.subject) for msg in mailbox.fetch()]
Look at Imbox, you will probably find what your are looking for https://pypi.org/project/imbox/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With