2013-09-23 102 views
0

我在使用python这一点时遇到了一些麻烦。使用python测试base64编码

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编码?我试过如果/在。我不确定我是否做对了。

回答

2

你需要看看Content-Transfer-Encoding头,看看是否有效载荷base64编码,所以:

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

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

message.get_payload(decode=True) 

解码有效载荷如果它是编码的,并且此外如果有效载荷被引用pritntable编码而不是base64,则也可以工作。