Python imaplib选择文件夹


问题内容

我正在使用Django建立邮件客户端,并使用imaplib提取电子邮件。到目前为止,我可以选择收件箱文件夹,因为在每个imap服务器中,它的名称都是“
INBOX”。但是在选择其他文件夹(例如垃圾邮件,已发送文件夹和其他文件夹)时,我遇到了麻烦,因为它们的名称基于帐户语言。例如,我的帐户设置为俄语,并列出如下邮件:

mail = imaplib.IMAP4_SSL(IMAP)
mail.login(USERNAME, PASSWORD)

for i in mail.list()[1]:
    print(i)

给我以下输出(utf-7):

b'(\\Inbox) "/" "INBOX"'
b'(\\Spam) "/" "&BCEEPwQwBDw-"'
b'(\\Sent) "/" "&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-"'
b'(\\Drafts) "/" "&BCcENQRABD0EPgQyBDgEOgQ4-"'
b'(\\Trash) "/" "&BBoEPgRABDcEOAQ9BDA-"'

尽管帐户选择了语言,如何选择文件夹?如果我使用:

mail.select("&BBoEPgRABDcEOAQ9BDA-")

它可以工作,但是我的邮件客户端是没有用的。


问题答案:

我决定拆分输出,并使用它们出现的语言原样使用文件夹名称:

for i in mail.list()[1]:
    l = i.decode().split(' "/" ')
    print(l[0] + " = " + l[1])