2

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

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

我的问题是,我的 GMail 是本地葡萄牙语。因此,就我而言,在葡萄牙语的“[Gmail]/Todo o correio”上进行选择是可行的,但选择“[Gmail/All email”不起作用。

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

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

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

4

2 回答 2

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”,因此只需在 .list() 返回的所有文件夹名称中搜索“\All”。

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

于 2012-12-02T18:47:50.030 回答
0

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

“谷歌和苹果开发了一个特殊的 IMAP 命令 XLIST 来解决这个问题。”

于 2013-05-17T13:37:31.270 回答