params=None, headers=None):
_prepare_set(msg, 'text', subtype, headers)
- charset = email.charset.Charset(charset).input_charset
+ cs = email.charset.Charset(charset)
+ charset = cs.output_charset
cte, payload = _encode_text(string, charset, cte, msg.policy)
msg.set_payload(payload)
msg.set_param('charset', charset, replace=True)
self.assertEqual(m.get_payload(decode=True), content.encode('ks_c_5601-1987'))
self.assertEqual(m.get_content(), content)
+ def test_set_text_charset_shift_jis(self):
+ m = self._make_message()
+ content = "\u65e5\u672c\u8a9e\n"
+ raw_data_manager.set_content(m, content, charset='shift_jis')
+ self.assertEqual(m['Content-Type'], 'text/plain; charset="iso-2022-jp"')
+ self.assertEqual(m.get_payload(decode=True), content.encode('iso-2022-jp'))
+ self.assertEqual(m.get_content(), content)
+ self.assertEqual(str(m), textwrap.dedent("""\
+ Content-Type: text/plain; charset="iso-2022-jp"
+ Content-Transfer-Encoding: 7bit
+
+ \x1b$BF|K\\8l\x1b(B
+ """))
+ self.assertEqual(bytes(m), textwrap.dedent("""\
+ Content-Type: text/plain; charset="iso-2022-jp"
+ Content-Transfer-Encoding: 7bit
+
+ \u65e5\u672c\u8a9e
+ """).encode('iso-2022-jp'))
+
+ def test_set_text_charset_euc_jp(self):
+ m = self._make_message()
+ content = "\u65e5\u672c\u8a9e\n"
+ raw_data_manager.set_content(m, content, charset='euc-jp')
+ self.assertEqual(m['Content-Type'], 'text/plain; charset="iso-2022-jp"')
+ self.assertEqual(m.get_payload(decode=True), content.encode('iso-2022-jp'))
+ self.assertEqual(m.get_content(), content)
+ self.assertEqual(str(m), textwrap.dedent("""\
+ Content-Type: text/plain; charset="iso-2022-jp"
+ Content-Transfer-Encoding: 7bit
+
+ \x1b$BF|K\\8l\x1b(B
+ """))
+ self.assertEqual(bytes(m), textwrap.dedent("""\
+ Content-Type: text/plain; charset="iso-2022-jp"
+ Content-Transfer-Encoding: 7bit
+
+ \u65e5\u672c\u8a9e
+ """).encode('iso-2022-jp'))
+
def test_set_text_plain_long_line_heuristics(self):
m = self._make_message()
content = ("Simple but long message that is over 78 characters"