gpt4 book ai didi

python - 无法解码编码 - Python 和 imaplib

转载 作者:行者123 更新时间:2023-12-01 05:44:17 25 4
gpt4 key购买 nike

我使用 Python 和 imaplib 从 IMAP 获取电子邮件。在这种特定情况下,我遇到了“收件人:”地址的问题。

我提取编码的“收件人:”字段,分隔地址,然后尝试对每个地址进行解码。我对这个特定的字符串有疑问。我正在使用 Pythondecode_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 不是应该返回有效的可解码字符串及其编码吗?

谢谢

最佳答案

您在某处丢失了大写字母。

正确的编码字符串是=?utf-8?b?VmFzY28gUGF0csOtY2lv?=。你的看起来是一样的,但都是小写。

由于 Base64 区分大小写(它使用 26 个小写字母、26 个大写字母、10 个数字和其他两个字符组成 64 个字母),因此将其改为小写当然会完全破坏它。

关于python - 无法解码编码 - Python 和 imaplib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16651664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com