我正在尝试使用Python和imaplib构建电子邮件客户端。
目前我的问题是:我想对包含所有电子邮件的文件夹进行搜索。通常称为“[GMail] /所有电子邮件”。
我的问题是,我的GMail原生葡萄牙语。因此,在我的情况下,对“[Gmail] / Todo o correio”进行选择,这是葡萄牙语等效的,但是选择“[Gmail /所有电子邮件”不起作用。
这是一个问题,因为我自然想要一种通用方式来访问任何Gmail帐户中的“所有邮件”文件夹,而不管国家/地区。
当然,我可以遵循一个天真的解决方案,例如对所有文件夹进行搜索并返回聚合结果,但我绝对不想沿着这条路走下去。
这是一个通用的解决方案吗?谢谢
答案 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来解决这个问题。”