2013-09-23 97 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,則也可以工作。