Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits: 2e1dca2e by Mark Sapiro at 2023-03-27T00:48:43+00:00 Decode encoded message bodies in administrivia rule. Fixes #1072 * Decode encoded message bodies in administrivia rule. - - - - - 79a49b8f by Mark Sapiro at 2023-03-27T00:48:43+00:00 Merge branch 'administrivia' into 'master' Decode encoded message bodies in administrivia rule. Closes #1072 See merge request mailman/mailman!1110 Merged-by: Mark Sapiro <m...@msapiro.net> Reviewed-by: - - - - - 3 changed files: - src/mailman/docs/NEWS.rst - src/mailman/rules/administrivia.py - src/mailman/rules/tests/test_administrivia.py Changes: ===================================== src/mailman/docs/NEWS.rst ===================================== @@ -42,6 +42,8 @@ Bugs fixed * Content filtering will no longer add its report to a non-mixed multipart message but will wrap the message and add the report to the wrapper. (Closes #1071) +* The administrivia rule will now decode encoded message bodies. + (Closes #1072) .. _news-3.3.8: ===================================== src/mailman/rules/administrivia.py ===================================== @@ -66,7 +66,9 @@ class Administrivia: # Search only the first text/plain subpart of the message. There's # really no good way to find email commands in any other content type. for part in typed_subpart_iterator(msg, 'text', 'plain'): - payload = part.get_payload() + payload = part.get_payload(decode=True) + payload = payload.decode(part.get_content_charset('utf-8'), + errors='replace') lines = payload.splitlines() # Count lines without using enumerate() because blank lines in the # payload don't count against the maximum examined. ===================================== src/mailman/rules/tests/test_administrivia.py ===================================== @@ -49,3 +49,21 @@ A message body. self.assertTrue(result) self.assertEqual(msgdata['moderation_reasons'], ['Message contains administrivia']) + + def test_encoded_body(self): + # Test that encoded body is decoded. + msg = mfs("""\ +From: a...@example.com +To: t...@example.com +Subject: An innocuous subject +Message-ID: <ant> +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 +MIMI-Version: 1.0 + +SSB3YW50IG9mZiB0aGlzIGxpc3QKdW5zdWJzY3JpYmUK +""") + rule = administrivia.Administrivia() + msgdata = {} + result = rule.check(self._mlist, msg, msgdata) + self.assertTrue(result) View it on GitLab: https://gitlab.com/mailman/mailman/-/compare/cd53868b09821e9560e6bf3ab5ecc92eb1429eea...79a49b8f120c9f700892d234a31269543d0f9b1f -- View it on GitLab: https://gitlab.com/mailman/mailman/-/compare/cd53868b09821e9560e6bf3ab5ecc92eb1429eea...79a49b8f120c9f700892d234a31269543d0f9b1f You're receiving this email because of your account on gitlab.com.
_______________________________________________ Mailman-checkins mailing list -- mailman-checkins@python.org To unsubscribe send an email to mailman-checkins-le...@python.org https://mail.python.org/mailman3/lists/mailman-checkins.python.org/ Member address: arch...@jab.org