Search code examples
python-3.xgmail-api

How to retrieve the whole message body using Gmail API (python)


I want to extract the whole message body of mail using gmail api. Right now i am using 'snippets' but i need the entire text. I searched and found that it's something to do with payload, but i didn't understand how. Can someone show me an example? Also, I am using the Gmail api via python.


Solution

  • same as noogui said but I found that snippet wont return the whole body

    when the snippet exceed 200~ chars you will get it under payload.body.data you can find the whole body using payload.body.data

    the catch is that you are getting it base64encoded so you need to decode it :)

    the following code will do the trick

    import base64  
    mail = service.users().messages().get(userId=user_id, id=id, format="full").execute()
    
    def parse_msg(msg):
        if msg.get("payload").get("body").get("data"):
            return base64.urlsafe_b64decode(msg.get("payload").get("body").get("data").encode("ASCII")).decode("utf-8")
        return msg.get("snippet")