I found many dummy info about working with IMAP, but I didn\'t understand how to use it for my purposes. I found how I can get ALL messages from mailbox and ALL SEEN messages, b
from imap_tools import MailBox, AND
with MailBox('imap.mail.com').login('test@mail.com', 'pwd', 'INBOX') as mailbox:
# get list of subjects of flagged emails from INBOX folder
subjects = [msg.subject for msg in mailbox.fetch(A(flagged=True))]
# set flag on emails from INBOX that html contains <b> tag
flags = [imap_tools.MailMessageFlags.FLAGGED]
mailbox.flag([m.uid for m in mailbox.fetch() if '<b>' in m.html], flags, True)
# print flags for all emails from INBOX
for msg in mailbox.fetch(): print(msg.date, msg.flags)
My external lib: https://github.com/ikvk/imap_tools
Gmail's "Starred" state maps directly onto the IMAP \Flagged
keyword. So you can toggle a message's star by setting or unsetting \Flagged
on the message:
IMAP4.store(num, '+FLAGS', '\\Flagged')
You can search for starred messages by searching for FLAGGED
(or for unstarred messages via UNFLAGGED
):
IMAP4.search(None, 'FLAGGED')
Gmail even gives you a virtual folder containing all starred messages. If you SELECT "[Gmail]/Starred"
, you'll get a view of all the starred messages in the mailbox:
IMAP4.select('[Gmail]/Starred')