我正在尝试编写自定义邮件代理。 我正在尝试获取所有邮件,但我的邮箱在邮箱名称中有波兰语... 所以这段代码(从列表中删除所有打印件):
def parse_list_response(self, line):
list_response_pattern = re.compile(r'\((?P<flags>.*?)\) "(?P<delimiter>.*)" (?P<name>.*)')
line=line.decode(encoding='utf_8')
flags, delimiter, mailbox_name = list_response_pattern.match(line).groups()
mailbox_name = mailbox_name.strip('"')
return (flags, delimiter, mailbox_name)
def fetch_mails(self, from_who, since_when):
server = imaplib.IMAP4_SSL(self.hostname)
server.login(self.owner, self.password)
rc, mailboxes = server.list()
for line in mailboxes:
mailbox=self.parse_list_response(line)[2]
server.select(mailbox)
try:
messages = server.search('FROM "{}"'.format(from_who))
给我举个例子邮箱:
已解码=(\已标记\ HasNoChildren)“/”“[Gmail] / Oznaczone gwiazdk&amp; AQU - ”
参见:&amp; AQU -...它是波兰语“±”
问题是如何摆脱这个?我找不到如何解码这个字节码
答案 0 :(得分:2)
编码是IMAP4 Modified UTF-7,这是一种用于国际邮箱名称的约定,如RFC3501第5.1.3节中所定义。
不幸的是,imaplib模块目前还不支持它 - 尽管python错误跟踪器上存在一些问题,表明在不久的将来可能会发生变化(例如issue 5305和{{ 3}})。
无论如何,在此期间,您似乎必须找到第三方包来处理此问题(例如issue 22598)。