Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python和imaplib的GMail-在“所有邮件”中搜索_Python_Gmail_Imaplib - Fatal编程技术网

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

使用Python和imaplib的GMail-在“所有邮件”中搜索,python,gmail,imaplib,Python,Gmail,Imaplib,我正在尝试使用Python和imaplib构建一个电子邮件客户端 目前我的问题是:我想搜索包含所有电子邮件的文件夹。通常称为[GMail]/所有电子邮件 我的问题是,我的GMail是葡萄牙语。因此,在我的例子中,对[Gmail]/Todo o correio(葡萄牙语的等价物)进行选择是可行的,但选择[Gmail/All email]不起作用 这是一个问题,因为我自然希望有一个通用的方式来访问任何Gmail帐户中的所有邮件文件夹,而不考虑国家 当然,我可以遵循一个简单的解决方案,比如搜索所有文件

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

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

我的问题是,我的GMail是葡萄牙语。因此,在我的例子中,对[Gmail]/Todo o correio(葡萄牙语的等价物)进行选择是可行的,但选择[Gmail/All email]不起作用

这是一个问题,因为我自然希望有一个通用的方式来访问任何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]的索引中提取到之后第一个双引号的索引中,就可以获得所有邮件文件夹的名称。

不久就找到了解决方案。为了方便起见,将提及

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

请参见以下答案:

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

请参见以下答案:

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