diff --git a/_modules/index.html b/_modules/index.html
index f1e6516..048a193 100644
--- a/_modules/index.html
+++ b/_modules/index.html
@@ -5,14 +5,14 @@
- Overview: module code — parsedmarc 10.0.0 documentation
+ Overview: module code — parsedmarc 10.0.3 documentation
-
+
diff --git a/_modules/parsedmarc.html b/_modules/parsedmarc.html
index 939ef00..84b411e 100644
--- a/_modules/parsedmarc.html
+++ b/_modules/parsedmarc.html
@@ -5,14 +5,14 @@
- parsedmarc — parsedmarc 10.0.0 documentation
+ parsedmarc — parsedmarc 10.0.3 documentation
-
+
diff --git a/_modules/parsedmarc/elastic.html b/_modules/parsedmarc/elastic.html
index 68eac08..218489d 100644
--- a/_modules/parsedmarc/elastic.html
+++ b/_modules/parsedmarc/elastic.html
@@ -5,14 +5,14 @@
- parsedmarc.elastic — parsedmarc 10.0.0 documentation
+ parsedmarc.elastic — parsedmarc 10.0.3 documentation
-
+
@@ -803,6 +803,16 @@
to_["sample.headers.to"] = headers["to"]
to_query = Q(dict(match_phrase=to_)) # pyright: ignore[reportArgumentType]
q = q & to_query
+ if "reply-to" in headers:
+ # Flatten the Reply-To header to a string so it can be displayed
+ # and aggregated like From/To. Only the first address is used,
+ # matching the From/To handling above. Not part of the dedup
+ # query.
+ headers["reply-to"] = headers["reply-to"][0]
+ if headers["reply-to"][0] == "":
+ headers["reply-to"] = headers["reply-to"][1]
+ else:
+ headers["reply-to"] = " <".join(headers["reply-to"]) + ">"
if "subject" in headers:
subject = headers["subject"]
subject_query = {"match_phrase": {"sample.headers.subject": subject}}
diff --git a/_modules/parsedmarc/opensearch.html b/_modules/parsedmarc/opensearch.html
index 320d5a4..40f0e10 100644
--- a/_modules/parsedmarc/opensearch.html
+++ b/_modules/parsedmarc/opensearch.html
@@ -5,14 +5,14 @@
- parsedmarc.opensearch — parsedmarc 10.0.0 documentation
+ parsedmarc.opensearch — parsedmarc 10.0.3 documentation
-
+
@@ -803,6 +803,16 @@
to_["sample.headers.to"] = headers["to"]
to_query = Q(dict(match_phrase=to_))
q = q & to_query
+ if "reply-to" in headers:
+ # Flatten the Reply-To header to a string so it can be displayed
+ # and aggregated like From/To. Only the first address is used,
+ # matching the From/To handling above. Not part of the dedup
+ # query.
+ headers["reply-to"] = headers["reply-to"][0]
+ if headers["reply-to"][0] == "":
+ headers["reply-to"] = headers["reply-to"][1]
+ else:
+ headers["reply-to"] = " <".join(headers["reply-to"]) + ">"
if "subject" in headers:
subject = headers["subject"]
subject_query = {"match_phrase": {"sample.headers.subject": subject}}
diff --git a/_modules/parsedmarc/splunk.html b/_modules/parsedmarc/splunk.html
index 9646389..7259e8d 100644
--- a/_modules/parsedmarc/splunk.html
+++ b/_modules/parsedmarc/splunk.html
@@ -5,14 +5,14 @@
- parsedmarc.splunk — parsedmarc 10.0.0 documentation
+ parsedmarc.splunk — parsedmarc 10.0.3 documentation
-
+
diff --git a/_modules/parsedmarc/types.html b/_modules/parsedmarc/types.html
index da80e7f..3707928 100644
--- a/_modules/parsedmarc/types.html
+++ b/_modules/parsedmarc/types.html
@@ -5,14 +5,14 @@
- parsedmarc.types — parsedmarc 10.0.0 documentation
+ parsedmarc.types — parsedmarc 10.0.3 documentation
-
+
diff --git a/_modules/parsedmarc/utils.html b/_modules/parsedmarc/utils.html
index 4b66bcb..0eaf12e 100644
--- a/_modules/parsedmarc/utils.html
+++ b/_modules/parsedmarc/utils.html
@@ -5,14 +5,14 @@
- parsedmarc.utils — parsedmarc 10.0.0 documentation
+ parsedmarc.utils — parsedmarc 10.0.3 documentation
-
+
@@ -1292,9 +1292,15 @@
parsed_email["date"] = parsed_email["date"].replace("T", " ")
else:
parsed_email["date"] = None
- if "reply_to" in parsed_email:
+ # mailparser's mail_json names these headers with hyphens
+ # ("reply-to", "delivered-to"), not underscores. Reading the
+ # underscored key always missed, so every Reply-To address was
+ # silently dropped. Convert under the underscored name consumers
+ # expect and drop the raw hyphenated key so the body carries a
+ # single representation, matching how "to"/"cc"/"bcc" are handled.
+ if "reply-to" in parsed_email:
parsed_email["reply_to"] = list(
- map(lambda x: parse_email_address(x), parsed_email["reply_to"])
+ map(lambda x: parse_email_address(x), parsed_email.pop("reply-to"))
)
else:
parsed_email["reply_to"] = []
@@ -1320,9 +1326,9 @@
else:
parsed_email["bcc"] = []
- if "delivered_to" in parsed_email:
+ if "delivered-to" in parsed_email:
parsed_email["delivered_to"] = list(
- map(lambda x: parse_email_address(x), parsed_email["delivered_to"])
+ map(lambda x: parse_email_address(x), parsed_email.pop("delivered-to"))
)
if "attachments" not in parsed_email:
diff --git a/_static/documentation_options.js b/_static/documentation_options.js
index 6acc351..f31c7ec 100644
--- a/_static/documentation_options.js
+++ b/_static/documentation_options.js
@@ -1,5 +1,5 @@
const DOCUMENTATION_OPTIONS = {
- VERSION: '10.0.0',
+ VERSION: '10.0.3',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,
BUILDER: 'html',
diff --git a/api.html b/api.html
index e61e6b4..8c211cf 100644
--- a/api.html
+++ b/api.html
@@ -6,14 +6,14 @@
- API reference — parsedmarc 10.0.0 documentation
+ API reference — parsedmarc 10.0.3 documentation
-
+
diff --git a/contributing.html b/contributing.html
index ab72354..d18bb41 100644
--- a/contributing.html
+++ b/contributing.html
@@ -6,14 +6,14 @@
- Contributing to parsedmarc — parsedmarc 10.0.0 documentation
+ Contributing to parsedmarc — parsedmarc 10.0.3 documentation
-
+
diff --git a/davmail.html b/davmail.html
index cc649de..0e423ce 100644
--- a/davmail.html
+++ b/davmail.html
@@ -6,14 +6,14 @@
- Accessing an inbox using OWA/EWS — parsedmarc 10.0.0 documentation
+ Accessing an inbox using OWA/EWS — parsedmarc 10.0.3 documentation
-
+
diff --git a/dmarc.html b/dmarc.html
index 542ab7d..2aa472d 100644
--- a/dmarc.html
+++ b/dmarc.html
@@ -6,14 +6,14 @@
- Understanding DMARC — parsedmarc 10.0.0 documentation
+ Understanding DMARC — parsedmarc 10.0.3 documentation
-
+
diff --git a/elasticsearch.html b/elasticsearch.html
index b7da3a3..e486d07 100644
--- a/elasticsearch.html
+++ b/elasticsearch.html
@@ -6,14 +6,14 @@
- Elasticsearch and Kibana — parsedmarc 10.0.0 documentation
+ Elasticsearch and Kibana — parsedmarc 10.0.3 documentation
-
+
diff --git a/genindex.html b/genindex.html
index 8a5a6fc..d5da892 100644
--- a/genindex.html
+++ b/genindex.html
@@ -5,14 +5,14 @@
- Index — parsedmarc 10.0.0 documentation
+ Index — parsedmarc 10.0.3 documentation
-
+
diff --git a/index.html b/index.html
index ff0cd95..440cfbd 100644
--- a/index.html
+++ b/index.html
@@ -6,14 +6,14 @@
- parsedmarc documentation - Open source DMARC report analyzer and visualizer — parsedmarc 10.0.0 documentation
+ parsedmarc documentation - Open source DMARC report analyzer and visualizer — parsedmarc 10.0.3 documentation
-
+
diff --git a/installation.html b/installation.html
index 823030a..14e941a 100644
--- a/installation.html
+++ b/installation.html
@@ -6,14 +6,14 @@
- Installation — parsedmarc 10.0.0 documentation
+ Installation — parsedmarc 10.0.3 documentation
-
+
diff --git a/kibana.html b/kibana.html
index 0ed42aa..2f81b9c 100644
--- a/kibana.html
+++ b/kibana.html
@@ -6,14 +6,14 @@
- Using the Kibana dashboards — parsedmarc 10.0.0 documentation
+ Using the Kibana dashboards — parsedmarc 10.0.3 documentation
-
+
diff --git a/mailing-lists.html b/mailing-lists.html
index c5d172d..f6a1760 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -6,14 +6,14 @@
- What about mailing lists? — parsedmarc 10.0.0 documentation
+ What about mailing lists? — parsedmarc 10.0.3 documentation
-
+
diff --git a/objects.inv b/objects.inv
index b7c73c5..4b91d39 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/opensearch.html b/opensearch.html
index 5b00461..25a6418 100644
--- a/opensearch.html
+++ b/opensearch.html
@@ -6,14 +6,14 @@
- OpenSearch and Grafana — parsedmarc 10.0.0 documentation
+ OpenSearch and Grafana — parsedmarc 10.0.3 documentation
-
+
diff --git a/output.html b/output.html
index da827a8..b875493 100644
--- a/output.html
+++ b/output.html
@@ -6,14 +6,14 @@
- Sample outputs — parsedmarc 10.0.0 documentation
+ Sample outputs — parsedmarc 10.0.3 documentation
-
+
diff --git a/py-modindex.html b/py-modindex.html
index 69ec0ab..97aa4ac 100644
--- a/py-modindex.html
+++ b/py-modindex.html
@@ -5,14 +5,14 @@
- Python Module Index — parsedmarc 10.0.0 documentation
+ Python Module Index — parsedmarc 10.0.3 documentation
-
+
diff --git a/search.html b/search.html
index 3165429..21f1eea 100644
--- a/search.html
+++ b/search.html
@@ -5,7 +5,7 @@
- Search — parsedmarc 10.0.0 documentation
+ Search — parsedmarc 10.0.3 documentation
@@ -13,7 +13,7 @@
-
+
diff --git a/splunk.html b/splunk.html
index 8379f1f..4856693 100644
--- a/splunk.html
+++ b/splunk.html
@@ -6,14 +6,14 @@
- Splunk — parsedmarc 10.0.0 documentation
+ Splunk — parsedmarc 10.0.3 documentation
-
+
diff --git a/usage.html b/usage.html
index 3ab54a2..07b0508 100644
--- a/usage.html
+++ b/usage.html
@@ -6,14 +6,14 @@
- Using parsedmarc — parsedmarc 10.0.0 documentation
+ Using parsedmarc — parsedmarc 10.0.3 documentation
-
+