

やりたいこと：  
gmailのHTMLメールを取得してメールと同じ日本語に変換したいです。

コード：

[code]

    import imaplib,email
    from email.message import Message
    from email.header import Header
    from email.mime.text import MIMEText
    from email import encoders
    from email.mime.base import MIMEBase
    import imaplib, re, email, six, dateutil.parser
    from email.mime.multipart import MIMEMultipart
    import base64
    
    mail=imaplib.IMAP4_SSL('imap.gmail.com',993)
    mail.login('hogehoge@gmail.com','test123')
    mail.select("inbox")
    
    #特定のメールUNSEEN未読メールを読み込む
    term = u"件名".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')    #メールの情報を取得
        ms=email.message_from_string(x[0][1].decode('utf-8'))    #パースして取得
    
        #差出人を取得
        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]
    
        #件名を取得
        msg_subject = email.header.decode_header(ms.get('Subject'))[0][0]
        print(msg_subject)
    
        #本文を取得
        maintext=ms.get_payload()
    
        #body文字コードを元に戻すbase64
        body_decode=(base64.b64decode(maintext).decode())
    
[/code]

メール取得の一部：

[code]

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.= w
    
[/code]

この後もHTML形式の表示が続きます

エラー内容：

[code]

    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe0 in position 1: invalid continuation byte
    
[/code]

色々調べたのですが、文字コードが間違っているということでしょうか。


CC BY-SA 4.0
2022-06-20T02:56:47.197
89483
2022-06-20T02:56:47.197
51063
question
python python3 html gmail
HTMLメールのデコード処理を実施したい