GMail with Python 和 imaplib - 在"All mail"中搜索



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

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

我的

问题是,我的GMail是葡萄牙语。因此,就我而言,选择葡萄牙语等价物"[Gmail]/Todo o correio"是有效的,但选择"[Gmail/所有电子邮件"不起作用。

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

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

这是对此的通用解决方案吗?谢谢

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

运行 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]"的索引中提取到之后的第一个双引号的索引中,即可获得"所有邮件"文件夹名称。

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

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

相关内容

最新更新