83466


Pyhonでimaplibのライブラリーを使って、Gmailを取得しています。  
GMAILのボックスモデル（ボーダー）から本文を取得したいですが、下記のように本文のみ文字化けしてしまいます。  
差出人、タイトルの取得は特に問題なく取得できます。

文字コードを **iso-2022-jp** 、 **UTF-8** 、 **SHIFT JIS** 、 **ascii**
へ変更しても同じ本文のみ文字化けします。

文字化けしない方法ありますでしょうか。  
もし分かる方がいましたら、教えて頂けると幸いです。

CODE

[code]

    import imaplib, re, email, six, dateutil.parser
    
    mail=imaplib.IMAP4_SSL('imap.gmail.com',993)    #SMTPは993,POPは995
    mail.login('example@co.jp','12134')
    mail.select()   #メールボックスの選択
    
    #UNSEEN未読メールを読み込む
    # type,data=mail.search(None,'UNSEEN') #メールボックス内にあるすべてのデータを取得ALL
    
    #特定のメールUNSEEN未読メールを読み込む
    term = u"【Test".encode("utf-8")
    mail.literal = term
    type,data=mail.search("utf-8", "UNSEEN SUBJECT")
    
    for i in data[0].split():   #data分繰り返す
     ok,x=mail.fetch(i,'RFC822')    #メールの情報を取得
     #mail文字コード指定
     ms=email.message_from_string(x[0][1].decode('iso-2022-jp'))    #パースして取得
    
     #差出人を取得
     ad=email.header.decode_header(ms.get('From'))
     ms_code=ad[0][1]
     if(ms_code!=None):
      address=ad[0][0].decode(ms_code)
      address+=ad[1][0].decode(ms_code)
     else:
      address=ad[0][0]
    
     #タイトルを取得
     sb=email.header.decode_header(ms.get('Subject'))
     ms_code=sb[0][1]
     if(ms_code!=None):
      sbject=sb[0][0].decode(ms_code)
     else:
      ms_code=sb[1][1]
      sbject=sb[1][0].decode(ms_code)
    
     #本文を取得
     if ms.is_multipart():
      for payload in ms.get_payload():
       if payload.get_content_type() == "text/plain":
        body = payload.get_payload()
    
       else:
        if ms.get_content_type() == "text/plain":
         body = ms.get_payload()
    
     #メールの日時を取得
     time = dateutil.parser.parse(ms.get('Date')).strftime("%Y-%m-%d %H:%M")[:-1]
     time_comment = dateutil.parser.parse(ms.get('Date')).strftime("%Y-%m-%d %H:%M")
    
     print(time)
    
     #出力
     print(sbject)
     print(address)
     print(body)
    
[/code]

出力結果

[code]

    2021-11-05 09:2
    Test
    example@co.jp
    
    VEVTVOOAgA0KVEVTVOODgeOCseODg+ODiOOBp+OBmeOAgg==
    
[/code]

お手数ですが、よろしくお願い致します。

[![実際のGMAILの本文になります。](https://i.stack.imgur.com/No2rW.png)](https://i.stack.imgur.com/No2rW.png)


CC BY-SA 4.0
2021-11-07T04:48:09.390
83465
2021-11-08T06:04:49.803
2021-11-08T06:04:49.803
18859
18859
question
python gmail
PythonでGMAILの本文を日本語で取得したい


Base64 エンコードされているだけです。得られたメッセージボディの文字列をデコードすれば完了です。

簡単な例：

[code]

    import base64
    
    print(base64.b64decode(
        b'VEVTVOOAgA0KVEVTVOODgeOCseODg+ODiOOBp+OBmeOAgg=='
    ).decode())
    
[/code]

出力：

[code]

    TEST　
    TESTチケットです。
    
[/code]


CC BY-SA 4.0
2021-11-07T05:02:27.737
83466
2021-11-08T05:49:20.330
2021-11-08T05:49:20.330
18859
7290
83465
answer