【问题标题】:GMail with Python and imaplib - searching in "All mail"使用 Python 和 imaplib 的 GMail - 在“所有邮件”中搜索
【发布时间】:2012-11-20 06:44:22
【问题描述】:

我正在尝试使用 Python 和 imaplib 构建电子邮件客户端。

目前我的问题是:我想对包含所有电子邮件的文件夹进行搜索。通常称为“[GMail]/所有电子邮件”。

我的问题是,我的 GMail 是本地葡萄牙语。因此,在我的情况下,选择“[Gmail]/Todo o correio”,这是葡萄牙语的等效项,但选择“[Gmail/All email”不起作用。

这是一个问题,因为我自然想要一种通用的方式来访问我在任何 Gmail 帐户中的“所有邮件”文件夹,而不管国家/地区。

当然,我可以采用一种简单的解决方案,例如搜索所有文件夹并返回汇总结果,但我绝对不想走这条路。

这是通用的解决方法吗?谢谢

【问题讨论】:

    标签: python gmail imaplib


    【解决方案1】:

    不久之后找到了解决方案。为方便起见会提及。

    当您运行 mail_instance.list() 时,您会获得一个文件夹列表,例如:

    (\Noselect \HasChildren) "/" "[Gmail]"
    (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Caixote do Lixo"
    (\HasNoChildren \Flagged) "/" "[Gmail]/Com estrela"
    (\HasChildren \HasNoChildren \Sent) "/" "[Gmail]/Correio enviado"
    (\HasChildren \HasNoChildren \Important) "/" "[Gmail]/Importante"
    (\HasChildren \HasNoChildren \Drafts) "/" "[Gmail]/Rascunhos"
    (\HasNoChildren \Junk) "/" "[Gmail]/Spam"
    (\HasChildren \HasNoChildren \All) "/" "[Gmail]/Todo o correio"
    

    (这些是葡萄牙语)

    “所有邮件”文件夹的名称始终在字符串中包含标记“\All”,因此只需在 .list() 返回的所有文件夹名称中搜索“\All”即可。

    然后只需从“[Gmail]”的索引中提取子字符串到之后的第一个双引号的索引,即可获得“所有邮件”文件夹名称。

    【讨论】:

      【解决方案2】:

      看到这个答案:https://stackoverflow.com/a/3846248/2131094

      “Google 和 Apple 开发了一个特殊的 IMAP 命令 XLIST 来解决这个问题。”

      【讨论】:

        猜你喜欢
        • 2011-07-06
        • 2011-04-01
        • 2019-02-02
        • 1970-01-01
        • 2011-11-23
        • 2019-08-26
        • 2015-04-24
        • 2015-08-04
        • 2017-05-14
        相关资源
        最近更新 更多