I want to extract only the body of a message and return it. I can filter on the fields and display the snippet but not the body.
def GetMimeMessage(service, user_id, msg_id):
try:
message = service.users().messages().get(userId=user_id, id=msg_id, format='raw').execute()
print 'Message snippet: %s' % message['snippet']
msg_str = base64.urlsafe_b64decode(message['raw'].encode('ASCII'))
mime_msg = email.message_from_string(msg_str)
return mime_msg
except errors.HttpError, error:
print 'An error occurred: %s' % error
https://developers.google.com/gmail/api/v1/reference/users/messages/get
Thanks. So after some modifications, here the solution:
def GetMessageBody(service, user_id, msg_id):
try:
message = service.users().messages().get(userId=user_id, id=msg_id, format='raw').execute()
msg_str = base64.urlsafe_b64decode(message['raw'].encode('ASCII'))
mime_msg = email.message_from_string(msg_str)
messageMainType = mime_msg.get_content_maintype()
if messageMainType == 'multipart':
for part in mime_msg.get_payload():
if part.get_content_maintype() == 'text':
return part.get_payload()
return ""
elif messageMainType == 'text':
return mime_msg.get_payload()
except errors.HttpError, error:
print 'An error occurred: %s' % error