Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core


Commits:
ce7ac672 by Дилян Палаузов at 2022-03-31T18:45:24+00:00
Decode From: and Subject: in email command Replies

- - - - -
b02d188f by Mark Sapiro at 2022-03-31T18:45:24+00:00
Merge branch 'decode_subject_in_email_command_reply' into 
'master'

Decode From: and Subject: in email command Replies

See merge request mailman/mailman!1003
- - - - -


3 changed files:

- src/mailman/docs/NEWS.rst
- src/mailman/runners/command.py
- src/mailman/runners/tests/test_confirm.py


Changes:

=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -57,6 +57,8 @@ Bugs fixed
 * The subject of Welcome and Goodbye messages is now translated (Closes #1000)
 * Emails to a list's ``-join``, ``-leave`` or ``-confirm`` address that result
   in some errors will now produce a response.  (Closes #991)
+* RFC2047 encoded Subject: and From: headers reported in email command replies
+  are now decoded.  (Closes #999)
 
 REST
 ====


=====================================
src/mailman/runners/command.py
=====================================
@@ -186,9 +186,11 @@ class CommandRunner(Runner):
         # Include just a few key pieces of information from the original: the
         # sender, date, and message id.
         print(_('- Original message details:'), file=results)
-        subject = msg.get('subject', 'n/a')                      # noqa: F841
+        subject = str(make_header(decode_header(                 # noqa: F841
+            msg.get('subject', 'n/a'))))
         date = msg.get('date', 'n/a')                            # noqa: F841
-        from_ = msg.get('from', 'n/a')                           # noqa: F841
+        from_ = str(make_header(decode_header(                   # noqa: F841
+            msg.get('from', 'n/a'))))
         print(_('    From: ${from_}'), file=results)
         print(_('    Subject: ${subject}'), file=results)
         print(_('    Date: ${date}'), file=results)


=====================================
src/mailman/runners/tests/test_confirm.py
=====================================
@@ -385,3 +385,26 @@ To: test-confirm+1...@example.com
         self._runner.run()
         # This should send out an error email.
         get_queue_messages('virgin', expected_count=1)
+
+    def test_confirm_with_non_ascii_from_and_subject(self):
+        # this test shall return in the body the RFC2047-decoded
+        # From:display-part and Subject:
+        get_queue_messages('virgin')
+        msg = mfs("""\
+From: =?utf-8?Q?=D0=90=D0=BD=D0=B0?= <a...@example.org>
+Subject: =?utf-8?Q?=D0=9A=D1=8A=D1=89=D0=B0?=
+
+bad-command
+""")
+        self._commandq.enqueue(msg, dict(listid='test.example.com',
+                                         subaddress='confirm'))
+        self._runner.run()
+        # This should send out one email that confirms that token was accepted.
+        items = get_queue_messages('virgin', expected_count=1)
+        msg_result = items[0].msg
+        payload = msg_result.get_payload()
+        encoding = msg_result.get('Content-Transfer-Encoding')
+        if encoding and encoding.lower() == 'base64':
+            payload = base64.b64decode(payload).decode('utf-8')
+        self.assertIn('Ана <a...@example.org>', payload)
+        self.assertIn('Къща', payload)



View it on GitLab: 
https://gitlab.com/mailman/mailman/-/compare/4fa4f87f01561d8ef0b25094a5831980d72128da...b02d188fca31c5c0ddb9d679fa8dea9e6077c076

-- 
View it on GitLab: 
https://gitlab.com/mailman/mailman/-/compare/4fa4f87f01561d8ef0b25094a5831980d72128da...b02d188fca31c5c0ddb9d679fa8dea9e6077c076
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

Reply via email to