【问题标题】:Get starred messages from GMail using IMAP4 and python使用 IMAP4 和 python 从 GMail 获取加星标的邮件
【发布时间】:2011-07-03 17:41:16
【问题描述】:

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

【问题讨论】:

    标签: python imap


    【解决方案1】:

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

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

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

    IMAP4.search(None, 'FLAGGED')
    

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

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

    【讨论】:

    • 你好,你能提供类似的Java例子吗?
    • 选择选项不适用于我的任何帐户(我有三个),我得到[NONEXISTENT] Unknown Mailbox: [Gmail]/Starred (now in authenticated state) (Failure) 我的帐户设置为瑞典语言环境,我可以看到我需要使用的草稿瑞典语单词Utkast,但对于Starred,单词是Stjärnmärkt。如果我尝试使用 IMAP 的 UTF-7 编码 [Gmail]/Stjärnmärkt,我会得到 [NONEXISTENT] Unknown Mailbox: [Gmail]/Stj&AOQ-rnm&AOQ-rkt (now in authenticated state) (Failure)
    • 前端和后端团队似乎没有就事物的名称达成一致:IMAP 文件夹称为[Gmail]/Stjärnmärkta(附加“a”)。
    【解决方案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)
    

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

    【讨论】:

      猜你喜欢
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 2018-09-07
      • 2020-12-05
      • 2016-03-30
      相关资源
      最近更新 更多