diff --git a/mailparser/mailparser.py b/mailparser/mailparser.py index 200c618..e5e9495 100644 --- a/mailparser/mailparser.py +++ b/mailparser/mailparser.py @@ -350,7 +350,7 @@ def parse(self): # walk all mail parts for i, p in enumerate(parts): - if not p.is_multipart(): + if not p.is_multipart() or ported_string(p.get_content_disposition()).lower() == 'attachment': charset = p.get_content_charset('utf-8') charset_raw = p.get_content_charset() log.debug("Charset {!r} part {!r}".format(charset, i)) @@ -394,7 +394,12 @@ def parse(self): log.debug("content-disposition {!r} part {!r}".format( content_disposition, i)) - if transfer_encoding == "base64" or ( + if p.is_multipart(): + payload = ''.join([m.as_string() for m in p.get_payload(decode=False)]) + binary = False + log.debug("Filename {!r} part {!r} is multipart".format( + filename, i)) + elif transfer_encoding == "base64" or ( transfer_encoding == "quoted-\ printable" and "application" in mail_content_type):