有没有一种方法可以使用pythonimap4库根据条件搜索不同的收件箱?我只是不能把我的头绕在一个方法来检查某些子文件夹的基础上的条件。到现在为止,我从“收件箱”中选择子文件夹如下:
imap = imaplib.IMAP4_SSL(host=imap_host)
imap.login(imap_user, imap_pass)
unseen_mails = imap.select('Inbox.Private.folder1')
# this is the second subfolder within "Private"
# unseen_mails = imap.select('Inbox.Private.folder2')
unseen_mails = imap.search(None, '(UNSEEN)')
unseen_mails = unseen_mails[1]
print(unseen_mails)
如果有人能弄清楚我的大脑停止运作的地方会很高兴。
4条答案
按热度按时间w8f9ii691#
imap.list()
列出所有文件夹和子文件夹,imap.list(directory = 'Inbox')
列出Inbox的所有子文件夹。然后,您可以提取文件夹名称并搜索名称中包含/
的所有文件夹,以找到子文件夹。希望这个能帮上忙
o4hqfura2#
谢谢你们的帮助。我自己也想明白了。当你获取收件箱的状态时,你会得到一个dict,dict[1]是未读邮件的数量。如果它是空的,它只是返回“[b'']”,所以我写了一个if子句,它将我的输出与空收件箱no_mails = [b'']的输出进行比较,并告诉代码在所有子文件夹中运行这个。
rggaifut3#
https://github.com/ikvk/imap_tools
a64a0gku4#
我遇到了这个答案,试图使它只会列出子文件夹内的收件箱,而不是所有文件夹。例如,如果文件夹设置为;
我只需要folder 1和folder 2,而不是folder 1 -1和folder 1 -2。做;
印刷品
从https://readthedocs.org/projects/imapclient/downloads/pdf/master/
“%匹配0个或多个字符,但文件夹分隔符”(“/")除外。