mirror of
https://github.com/python/cpython.git
synced 2025-07-16 15:55:18 +00:00

Éric pointed out that given that the default was documented as None, someone would reasonably pass that to get the default behavior. In fixing the code to use None, I noticed that the change to _charset was being done after it had already been passed to MIMENonMultipart. The change to the test verifies that the order is now correct.
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
# Copyright (C) 2001-2006 Python Software Foundation
|
||
# Author: Barry Warsaw
|
||
# Contact: email-sig@python.org
|
||
|
||
"""Class representing text/* type MIME documents."""
|
||
|
||
__all__ = ['MIMEText']
|
||
|
||
from email.encoders import encode_7or8bit
|
||
from email.mime.nonmultipart import MIMENonMultipart
|
||
|
||
|
||
|
||
class MIMEText(MIMENonMultipart):
|
||
"""Class for generating text/* type MIME documents."""
|
||
|
||
def __init__(self, _text, _subtype='plain', _charset=None):
|
||
"""Create a text/* type MIME document.
|
||
|
||
_text is the string for this message object.
|
||
|
||
_subtype is the MIME sub content type, defaulting to "plain".
|
||
|
||
_charset is the character set parameter added to the Content-Type
|
||
header. This defaults to "us-ascii". Note that as a side-effect, the
|
||
Content-Transfer-Encoding header will also be set.
|
||
"""
|
||
|
||
# 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 is None:
|
||
try:
|
||
_text.encode('us-ascii')
|
||
_charset = 'us-ascii'
|
||
except UnicodeEncodeError:
|
||
_charset = 'utf-8'
|
||
|
||
MIMENonMultipart.__init__(self, 'text', _subtype,
|
||
**{'charset': _charset})
|
||
|
||
self.set_payload(_text, _charset)
|