class MIMEText(MIMENonMultipart):
"""Class for generating text/* type MIME documents."""
- def __init__(self, _text, _subtype='plain', _charset='us-ascii'):
+ def __init__(self, _text, _subtype='plain', _charset=None):
"""Create a text/* type MIME document.
_text is the string for this message object.
header. This defaults to "us-ascii". Note that as a side-effect, the
Content-Transfer-Encoding header will also be set.
"""
- MIMENonMultipart.__init__(self, 'text', _subtype,
- **{'charset': _charset})
- # If _charset was defualted, check to see see if there are non-ascii
- # characters present. Default to utf-8 if there are.
+ # If no _charset was specified, check to see see if there are non-ascii
+ # characters present. If not, use 'us-ascii', otherwise use utf-8.
# XXX: This can be removed once #7304 is fixed.
- if _charset =='us-ascii':
+ if _charset is None:
try:
- _text.encode(_charset)
+ _text.encode('us-ascii')
+ _charset = 'us-ascii'
except UnicodeEncodeError:
_charset = 'utf-8'
+ MIMENonMultipart.__init__(self, 'text', _subtype,
+ **{'charset': _charset})
+
self.set_payload(_text, _charset)
# Issue 14291
m = MIMEText('É testabc\n')
self.assertEqual(str(m),textwrap.dedent("""\
- MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
+ MIME-Version: 1.0
Content-Transfer-Encoding: base64
w4kgdGVzdGFiYwo=
"""))
-
# Test the email.encoders module
class TestEncoders(unittest.TestCase):