From 0f63290d6ea8d454a0233572b514d7a2ca8018ba Mon Sep 17 00:00:00 2001 From: Sean Whalen Date: Sun, 14 Oct 2018 03:55:06 -0400 Subject: [PATCH] Fix parsing of some emails --- CHANGELOG.md | 5 +++++ parsedmarc/__init__.py | 2 +- parsedmarc/__version__.py | 2 +- parsedmarc/utils.py | 10 +++++++++- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84f3235..77a6397 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +4.3.1 +----- + +- Fix parsing of some emails + 4.3.0 ----- diff --git a/parsedmarc/__init__.py b/parsedmarc/__init__.py index 7eb70c7..537b252 100644 --- a/parsedmarc/__init__.py +++ b/parsedmarc/__init__.py @@ -654,7 +654,7 @@ def parse_report_email(input_, nameservers=None, timeout=2.0): msg = email.message_from_string(input_) except Exception as e: - raise ParserError(e.__str__()) + raise InvalidDMARCReport(e.__str__()) subject = None feedback_report = None sample = None diff --git a/parsedmarc/__version__.py b/parsedmarc/__version__.py index d277743..becc65e 100644 --- a/parsedmarc/__version__.py +++ b/parsedmarc/__version__.py @@ -2,7 +2,7 @@ import platform -__version__ = "4.3.0" +__version__ = "4.3.1" USER_AGENT = "Mozilla/5.0 ((0 {1})) parsedmarc/{2}".format( platform.system(), diff --git a/parsedmarc/utils.py b/parsedmarc/utils.py index 0e0a611..653f625 100644 --- a/parsedmarc/utils.py +++ b/parsedmarc/utils.py @@ -403,7 +403,15 @@ def parse_email(data): if "date_utc" in received: received["date_utc"] = received["date_utc"].replace("T", " ") - parsed_email["from"] = parse_email_address(parsed_email["from"][0]) + + if "from" not in parsed_email: + if "From" in parsed_email["headers"]: + parsed_email["from"] = parsed_email["Headers"]["From"] + else: + parsed_email["from"] = None + + if parsed_email["from"] is not None: + parsed_email["from"] = parse_email_address(parsed_email["from"][0]) if "date" in parsed_email: parsed_email["date"] = parsed_email["date"].replace("T", " ")