繁体   English   中英

使用 IMAP4 和 python 从 GMail 获取已加星标的邮件

[英]Get starred messages from GMail using IMAP4 and python

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

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

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

您可以通过搜索FLAGGED (或通过UNFLAGGED搜索未加星标的消息)来搜索FLAGGEDUNFLAGGED消息:

IMAP4.search(None, 'FLAGGED')

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

IMAP4.select('[Gmail]/Starred')
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM