0

我在使用这个 python 时遇到了一些麻烦。

def get_msg( message ):
    if not message.is_multipart():
            if "base64" in str(message.get_payload()):
                    return base64.decodestring(str(message.get_payload()))
    return message.get_payload()
    return '\n\n'.join( [base64.decodestring(str(m)) for m in message.get_payload()] )

准确地说是第 3 行和第 4 行。如果消息不是多部分的,我需要测试它是否是 base64 编码的。Exchange 有时喜欢这样做,当我加密它时会产生问题。

正如您所看到的那样,我可以处理附件,但如何测试 base64 编码?我试过如果/在。我不确定我做对了。

4

1 回答 1

2

您需要查看Content-Transfer-Encoding标头以查看有效负载是否经过 base64 编码,因此:

if message['Content-Transfer-Encoding'] == 'base64':
    # ...

但更简单的解决方案可能是使用

message.get_payload(decode=True)

如果有效负载已编码,则它会对其进行解码,此外,如果有效负载被引用 pritntable 编码而不是 base64,则它也可以工作。

于 2013-09-24T00:14:24.700 回答