From e4beb11ad10e1a1de2b1c2c10ba131905ea63999 Mon Sep 17 00:00:00 2001 From: Moriyoshi Koizumi Date: Tue, 30 Jul 2013 20:45:12 +0900 Subject: [PATCH] Do not forcefully convert the payload to ASCII base on the assumption that it should be encoded in bas64. IT MAY WELL CONTAIN raw utf-8 strings. --- repoze/sendmail/encoding.py | 2 +- repoze/sendmail/tests/test_encoding.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/repoze/sendmail/encoding.py b/repoze/sendmail/encoding.py index 03fff54..cff4d8d 100644 --- a/repoze/sendmail/encoding.py +++ b/repoze/sendmail/encoding.py @@ -100,7 +100,7 @@ def encode_message(message, The return is a byte string of the whole message. """ cleanup_message(message) - return message.as_string().encode('ascii') + return message.as_string() def best_charset(text): diff --git a/repoze/sendmail/tests/test_encoding.py b/repoze/sendmail/tests/test_encoding.py index be7f8e0..42a1fa3 100644 --- a/repoze/sendmail/tests/test_encoding.py +++ b/repoze/sendmail/tests/test_encoding.py @@ -205,6 +205,20 @@ def test_encoding_utf_8_body(self): self.assertTrue(encodestring(body.encode('utf-8')) in encoded) + def test_encoding_raw_utf_8_body(self): + from repoze.sendmail._compat import b + from repoze.sendmail._compat import encodestring + utf_8_encoded = b('mo \xe2\x82\xac') + utf_8 = utf_8_encoded.decode('utf-8') + body = 'I know what you did last '+ utf_8 + message = self._makeMessage() + message['Content-Transfer-Encoding'] = '8bit' + message.set_payload(body) + + encoded = self._callFUT(message) + + self.assertTrue(body.encode('utf-8') in encoded) + def test_binary_body(self): from email.mime import application from email.mime import multipart