diff --git a/CHANGELOG.md b/CHANGELOG.md index 8314bb8..c9356b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +4.3.3 +----- + +- Fix forensic report email processing + 4.3.2 ----- diff --git a/parsedmarc/__init__.py b/parsedmarc/__init__.py index 8c3a1be..760e3fc 100644 --- a/parsedmarc/__init__.py +++ b/parsedmarc/__init__.py @@ -663,26 +663,27 @@ def parse_report_email(input_, nameservers=None, timeout=2.0): for part in msg.walk(): content_type = part.get_content_type() payload = part.get_payload() - if type(payload) == list: - for payload_ in payload: - payload_ = payload_.__str__() - if content_type == "message/feedback-report": - try: - if "Feedback-Type" in payload_: - feedback_report = payload_ - else: - feedback_report = b64decode(payload_).__str__() - feedback_report = feedback_report.lstrip( - "b'").rstrip("'") - feedback_report = feedback_report.replace("\\r", "") - feedback_report = feedback_report.replace("\\n", "\n") - except (ValueError, TypeError, binascii.Error): - feedback_report = payload + if type(payload) != list: + payload = [payload] + for payload_ in payload: + payload_ = payload_.__str__() + if content_type == "message/feedback-report": + try: + if "Feedback-Type" in payload_: + feedback_report = payload_ + else: + feedback_report = b64decode(payload_).__str__() + feedback_report = feedback_report.lstrip( + "b'").rstrip("'") + feedback_report = feedback_report.replace("\\r", "") + feedback_report = feedback_report.replace("\\n", "\n") + except (ValueError, TypeError, binascii.Error): + feedback_report = payload - elif content_type == "text/rfc822-headers": - sample = payload - elif content_type == "message/rfc822": - sample = payload[0].__str__() + elif content_type == "text/rfc822-headers": + sample = payload + elif content_type == "message/rfc822": + sample = payload[0].__str__() if feedback_report and sample: try: diff --git a/parsedmarc/__version__.py b/parsedmarc/__version__.py index a3a9e03..fa58ee5 100644 --- a/parsedmarc/__version__.py +++ b/parsedmarc/__version__.py @@ -2,7 +2,7 @@ import platform -__version__ = "4.3.2" +__version__ = "4.3.3" USER_AGENT = "Mozilla/5.0 ((0 {1})) parsedmarc/{2}".format( platform.system(),