Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits:
87f2c2ba by Mark Sapiro at 2020-05-11T16:51:29+00:00
Bounce probes are now encoded in the correct charset.
- - - - -
0a4cacd4 by Mark Sapiro at 2020-05-11T16:51:30+00:00
Merge branch 'fix_712' into 'master'
Bounce probes are now encoded in the correct charset.
Closes #712
See merge request mailman/mailman!636
- - - - -
4 changed files:
- src/mailman/app/bounces.py
- src/mailman/app/tests/test_bounces.py
- src/mailman/docs/NEWS.rst
- src/mailman/runners/tests/test_bounce.py
Changes:
=====================================
src/mailman/app/bounces.py
=====================================
@@ -230,7 +230,7 @@ def send_probe(member, msg=None, message_id=None):
probe = UserNotification(member.address.email, probe_sender,
subject, lang=member.preferred_language)
probe.set_type('multipart/mixed')
- notice = MIMEText(text, _charset=mlist.preferred_language.charset)
+ notice = MIMEText(text, _charset=member.preferred_language.charset)
probe.attach(notice)
if msg is not None:
probe.attach(MIMEMessage(msg))
=====================================
src/mailman/app/tests/test_bounces.py
=====================================
@@ -342,7 +342,8 @@ $owneraddr
send_probe(self._member, self._msg)
items = get_queue_messages('virgin', expected_count=1)
message = items[0].msg
- notice = message.get_payload(0).get_payload()
+ notice = message.get_payload(0).get_payload(decode=True)
+ notice = notice.decode(self._member.preferred_language.charset)
self.assertMultiLineEqual(notice, """\
blah blah blah [email protected] [email protected]
[email protected]
=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -18,6 +18,7 @@ Bugs
* When importing 2.1 lists, ignore CR characters added by browsers in headers
and footers. (Closes #701)
* RFC 2369 headers are now added to notification messages. (Closes #710)
+* Bounce probes are now encoded in the correct charset. (Closes #712)
3.3.1
=====================================
src/mailman/runners/tests/test_bounce.py
=====================================
@@ -26,6 +26,7 @@ from mailman.config import config
from mailman.database.transaction import transaction
from mailman.interfaces.bounce import (
BounceContext, IBounceProcessor, UnrecognizedBounceDisposition)
+from mailman.interfaces.languages import ILanguageManager
from mailman.interfaces.member import DeliveryStatus, MemberRole
from mailman.interfaces.styles import IStyle, IStyleManager
from mailman.interfaces.usermanager import IUserManager
@@ -112,6 +113,21 @@ Original-Recipient: rfc822; [email protected]
events = list(self._processor.events)
self.assertEqual(len(events), 0)
+ def test_send_probe_non_ascii(self):
+ # Send a pobe from an English language list to a user with non-ascii
+ # preferred language.
+ language_manager = getUtility(ILanguageManager)
+ self._mlist.preferred_language = language_manager.get('en')
+ # French charset is utf-8, but testing has it as latin-1
+ french = language_manager.get('fr')
+ french.charset = 'utf-8'
+ self._member.address.preferences.preferred_language = french
+ send_probe(self._member, self._msg)
+ items = get_queue_messages('virgin', expected_count=1)
+ msg = items[0].msg
+ self.assertIn(b'[email protected]',
+ msg.get_payload()[0].get_payload(decode=True))
+
def test_verp_probe_bounce(self):
# A VERP probe bounced. The primary difference here is that the
# registered bounce event will have a different context. The
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/bde67ed83301f07f0fd01b2b0e7b7b23749e4acc...0a4cacd4a4a16649934579218e0509ecd7f46f49
--
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/bde67ed83301f07f0fd01b2b0e7b7b23749e4acc...0a4cacd4a4a16649934579218e0509ecd7f46f49
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: [email protected]