summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortkikuchi2007-03-23 06:37:02 +0000
committertkikuchi2007-03-23 06:37:02 +0000
commitcd3c500449c1c4d0ff7a9e1710c3bedd81c6a804 (patch)
tree9cbef46d99ef5c756ea3141d157718dcd052a667
parent4b481c179c96440b3785ecc5a069af4d696f75a3 (diff)
downloadmailman-cd3c500449c1c4d0ff7a9e1710c3bedd81c6a804.tar.gz
mailman-cd3c500449c1c4d0ff7a9e1710c3bedd81c6a804.tar.zst
mailman-cd3c500449c1c4d0ff7a9e1710c3bedd81c6a804.zip
-rw-r--r--Mailman/Handlers/Decorate.py11
-rw-r--r--Mailman/testing/test_handlers.py17
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):