使用IMAP4和python从GMail获取已加星标的消息

时间:2011-02-24 17:04:05

标签: python imap

我发现了许多关于使用IMAP的虚拟信息,但我不明白如何将它用于我的目的。我发现如何从邮箱和所有SEEN消息中获取所有消息,但我应该如何处理星星? 请给我一些python代码示例,用于从GMail通过IMAP4获取已加星标的消息,以检查某些消息是否已加星标或取消星标,用于主演和取消选择某条消息。

2 个答案:

答案 0 :(得分:8)

Gmail的“已加星标”状态直接映射到IMAP \Flagged关键字。因此,您可以通过在消息上设置或取消设置\Flagged来切换消息的星标:

IMAP4.store(num, '+FLAGS', '\\Flagged')

您可以搜索FLAGGED(或通过UNFLAGGED搜索未加星标的邮件)来搜索已加星标的邮件:

IMAP4.search(None, 'FLAGGED')

Gmail甚至会为您提供包含所有已加星标的邮件的虚拟文件夹。如果您SELECT "[Gmail]/Starred",您将会看到邮箱中所有已加星标的邮件:

IMAP4.select('[Gmail]/Starred')

答案 1 :(得分:0)

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)

我的外部库:https://github.com/ikvk/imap_tools