code: def get_body_from_message(message, maintype, subtype):
      
      body = six.text_type('')
      for part in message.walk():
          if part.get('content-disposition', '').startswith('attachment;'):
              continue
          if part.get_content_maintype() == maintype and \
                  part.get_content_subtype() == subtype:
              charset = part.get_content_charset()
              this_part = part.get_payload(decode=True)
              if charset:
                  try:
                      this_part = this_part.decode(charset, 'replace')
                  except LookupError:
                      this_part = this_part.decode('ascii', 'replace')
                      logger.warning(
                          'Unknown encoding %s encountered while decoding '
                          'text payload.  Interpreting as ASCII with '
                          'replacement, but some data may not be '
                          'represented as the sender intended.',
                          charset
                      )
                  except ValueError:
                      this_part = this_part.decode('ascii', 'replace')
                      logger.warning(
                          'Error encountered while decoding text '
                          'payload from an incorrectly-constructed '
                          'e-mail; payload was converted to ASCII with '
                          'replacement, but some data may not be '
                          'represented as the sender intended.'
                      )
              else:
                  this_part = this_part.decode('ascii', 'replace')
  
              body += this_part
  
      return body
docs: Fetchs the body message matching main/sub content type.