Fixed #7747: Altered EmailMessage such that messages with long subject lines don't use tabs in their continutation sequence. Tabs in subjects cause problems with Outlook and Thunderbird. Thanks to Mark Allison <mark.allison@maplecroft.com> for the report and fix.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@8483 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2008-08-23 13:31:28 +00:00
parent b35acb3ee9
commit 0f869f905e
2 changed files with 14 additions and 0 deletions

View File

@ -86,6 +86,9 @@ def forbid_multi_line_headers(name, val):
val = ', '.join(result) val = ', '.join(result)
else: else:
val = Header(val, settings.DEFAULT_CHARSET) val = Header(val, settings.DEFAULT_CHARSET)
else:
if name.lower() == 'subject':
val = Header(val)
return name, val return name, val
class SafeMIMEText(MIMEText): class SafeMIMEText(MIMEText):

View File

@ -10,6 +10,8 @@ r"""
>>> email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com']) >>> email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com'])
>>> message = email.message() >>> message = email.message()
>>> message['Subject'] >>> message['Subject']
<email.header.Header instance...>
>>> message['Subject'].encode()
'Subject' 'Subject'
>>> message.get_payload() >>> message.get_payload()
'Content' 'Content'
@ -23,6 +25,8 @@ r"""
>>> email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com','other@example.com']) >>> email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com','other@example.com'])
>>> message = email.message() >>> message = email.message()
>>> message['Subject'] >>> message['Subject']
<email.header.Header instance...>
>>> message['Subject'].encode()
'Subject' 'Subject'
>>> message.get_payload() >>> message.get_payload()
'Content' 'Content'
@ -45,4 +49,11 @@ Traceback (most recent call last):
... ...
BadHeaderError: Header values can't contain newlines (got u'Subject\nInjection Test' for header 'Subject') BadHeaderError: Header values can't contain newlines (got u'Subject\nInjection Test' for header 'Subject')
# Test for space continuation character in long (ascii) subject headers (#7747)
>>> email = EmailMessage('Long subject lines that get wrapped should use a space continuation character to get expected behaviour in Outlook and Thunderbird', 'Content', 'from@example.com', ['to@example.com'])
>>> message = email.message()
>>> message.as_string()
'Content-Type: text/plain; charset="utf-8"\nMIME-Version: 1.0\nContent-Transfer-Encoding: quoted-printable\nSubject: Long subject lines that get wrapped should use a space continuation\n character to get expected behaviour in Outlook and Thunderbird\nFrom: from@example.com\nTo: to@example.com\nDate: ...\nMessage-ID: <...>\n\nContent'
""" """