#14380: Have MIMEText defaults to utf-8 when passed non-ASCII unicode
Previously it would just accept the unicode, which would wind up as unicode in
the transfer-encoded message object, which is just wrong.
Patch by Jeff Knupp.
diff --git a/Lib/email/mime/text.py b/Lib/email/mime/text.py
index 5747db5..5a5e39b 100644
--- a/Lib/email/mime/text.py
+++ b/Lib/email/mime/text.py
@@ -27,4 +27,14 @@
"""
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.
+ # XXX: This can be removed once #7304 is fixed.
+ if _charset =='us-ascii':
+ try:
+ _text.encode(_charset)
+ except UnicodeEncodeError:
+ _charset = 'utf-8'
+
self.set_payload(_text, _charset)