diff options
| author | tkikuchi | 2007-03-23 06:37:02 +0000 |
|---|---|---|
| committer | tkikuchi | 2007-03-23 06:37:02 +0000 |
| commit | cd3c500449c1c4d0ff7a9e1710c3bedd81c6a804 (patch) | |
| tree | 9cbef46d99ef5c756ea3141d157718dcd052a667 | |
| parent | 4b481c179c96440b3785ecc5a069af4d696f75a3 (diff) | |
| download | mailman-cd3c500449c1c4d0ff7a9e1710c3bedd81c6a804.tar.gz mailman-cd3c500449c1c4d0ff7a9e1710c3bedd81c6a804.tar.zst mailman-cd3c500449c1c4d0ff7a9e1710c3bedd81c6a804.zip | |
| -rw-r--r-- | Mailman/Handlers/Decorate.py | 11 | ||||
| -rw-r--r-- | Mailman/testing/test_handlers.py | 17 |
2 files changed, 23 insertions, 5 deletions
diff --git a/Mailman/Handlers/Decorate.py b/Mailman/Handlers/Decorate.py index 0b135b5ce..23826cdd1 100644 --- a/Mailman/Handlers/Decorate.py +++ b/Mailman/Handlers/Decorate.py @@ -99,15 +99,16 @@ def process(mlist, msg, msgdata): # charset, then utf-8. It's okay if some of these are duplicates. for cset in (lcset, mcset, 'utf-8'): try: - payload = payload.encode(cset) - except UnicodeError: - pass - else: + pld = payload.encode(cset) del msg['content-transfer-encoding'] del msg['content-type'] - msg.set_payload(payload, cset) + msg.set_payload(pld, cset) wrap = False break + # 'except' should be here because set_payload() may fail for + # 'euc-jp' which re-encode to 'iso-2022-jp'. :( + except UnicodeError: + pass except (LookupError, UnicodeError): pass elif msg.get_content_type() == 'multipart/mixed': diff --git a/Mailman/testing/test_handlers.py b/Mailman/testing/test_handlers.py index b2fb5ce27..64a6e409b 100644 --- a/Mailman/testing/test_handlers.py +++ b/Mailman/testing/test_handlers.py @@ -883,6 +883,23 @@ IMAGEDATAIMAGEDATAIMAGEDATA self._mlist, None, {'personalize': 1, 'recips': [1, 2, 3]}) + def test_no_multipart_mixed_charset(self): + mlist = self._mlist + mlist.preferred_language = 'ja' + mlist.msg_header = '%(description)s header' + mlist.msg_footer = '%(description)s footer' + mlist.description = u'\u65e5\u672c\u8a9e' + msg = Message.Message() + msg.set_payload('Fran\xe7aise', 'iso-8859-1') + Decorate.process(self._mlist, msg, {}) + self.assertEqual(msg.as_string(unixfrom=0), """\ +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5pel5pys6KqeIGhlYWRlcgpGcmFuw6dhaXNlCuaXpeacrOiqniBmb290ZXI= +""") + class TestFileRecips(TestBase): |
