2016-10-26 8 views
0

メールボックス内の未読メッセージから添付ファイルをダウンロードするスクリプトを作成しました。 'application/pdf'コンテンツタイプ私は何の問題もありません。 base64でエンコードされた 'application/octet-stream'コンテンツタイプが私に時間を与えています。IMAP base64でコード化されたPDFが保存時に破損する

以下のコードは、pdfを要求されたパスに移動しますが、0kbとして破損しています。いかなる援助も感謝します。

try: 
    if part.get_content_type() == 'application/octet-stream': 
     payload = part.get_payload(decode=1) 
     fp = open(os.path.join('C:\\Attachment_Downloader\\', 
           datetime.datetime.now().strftime("%m%d%y%H%M%S") 
           + "_" + str(var_seq) + ".pdf"), 'wb') 
     fp.write(base64.decodestring(payload)) 
     fp.close() 
     logging.debug("File Decoded and Moved "+ part.get_filename()) 
except Exception as e: 
    logging.debug("File Move Failed : " + part.get_filename()) 
    logging.exception("message") 
+1

あなたはpayload' 'に割り当てられている内容を見たことがありますか?それは有効なbase64エンコードされたデータのように見えますか? – martineau

+1

@martineauペイロードを2回デコードしていました。私はその問題を修正し、コードは期待どおりに働いています。ありがとうございました! – AlliDeacon

+0

あなたがあなた自身でそれをすべて理解したことを聞いてうれしいです。 – martineau

答えて

0

私は2回デコードしていました。 私は以下に私のコードを固定し、期待どおりに働いている:

try: 
    if part.get_content_type() == 'application/octet-stream': 
     payload = part.get_payload() 
     fp = open(os.path.join('C:\\Attachment_Downloader\\', 
           datetime.datetime.now().strftime("%m%d%y%H%M%S") 
           + "_" + str(var_seq) + ".pdf"), 'wb') 
     fp.write(base64.decodestring(payload)) 
     fp.close() 
     logging.debug("File Decoded and Moved "+ part.get_filename()) 
except Exception as e: 
    logging.debug("File Move Failed : " + part.get_filename()) 
    logging.exception("message") 
関連する問題