Skip to content Skip to sidebar Skip to footer

Get Starred Messages From Gmail Using Imap4 And Python

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, but h

Solution 1:

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

Solution 2:

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

Post a Comment for "Get Starred Messages From Gmail Using Imap4 And Python"