我正在使用 Python 和 imaplib 从 IMAP 获取电子邮件。在这种特定情况下,我的 To: 地址有问题。
我提取编码的 To: 字段,分离地址,然后尝试对每个地址进行解码。我对这个特定的字符串有疑问。我正在使用 Python decode_header 函数来解码 Quoted-Printable/Base64 编码。我从编码开始:
'=?utf-8?b?vmfzy28gugf0csoty2lv?= <vasco.patricio.pessoal@gmail.com>'
应该是Vasco Patrício <vasco.patricio.pessoal@gmail.com>
(我的姓名和电子邮件)。正如预期的那样,decode_header 返回一组编码的子字符串及其编码,这导致了这个由 2 个元组组成的数组:
[('\xbeg\xf3\xcbo \xba\x07\xf4r\xca-\xcbio', 'utf-8'), ('<vasco.patricio.pessoal@gmail.com>', None)]
但是,当我尝试使用这个非常简单的代码解码第一个元组时:
for part in decoded_parts:
if part[1]:
part_text = part[0].decode(part[1])
else:
part_text = part[0]
我得到一个 UnicodeDecodeError:
UnicodeDecodeError at /api/refresh/emails/
'utf8' codec can't decode byte 0xbe in position 0: invalid start byte
我确认尝试通过控制台对其进行解码会导致相同的异常。
decode_header 不应该返回有效的可解码字符串及其编码吗?
谢谢