使用Python和imaplib进行GMail - 在“所有邮件”中搜索

时间:2012-12-02 18:38:54

标签: python gmail imaplib

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

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

我的问题是,我的GMail原生葡萄牙语。因此,在我的情况下,对“[Gmail] / Todo o correio”进行选择,这是葡萄牙语等效的,但是选择“[Gmail /所有电子邮件”不起作用。

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

当然,我可以遵循一个天真的解决方案,例如对所有文件夹进行搜索并返回聚合结果,但我绝对不想沿着这条路走下去。

这是一个通用的解决方案吗?谢谢

2 个答案:

答案 0 :(得分:4)

不久后找到解决方案。为方便起见。

运行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 mail”文件夹的名称始终在字符串中包含标记“\ All”,因此只需在.list()返回的所有文件夹名称中搜索“\ All”。

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

答案 1 :(得分:0)

请参阅此答案:https://stackoverflow.com/a/3846248/2131094

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