mirror of
https://github.com/django/django.git
synced 2025-08-16 14:59:27 +00:00
Fixed #27696 -- Measured email long lines on encoded content
Thanks Pavel Pokrovskiy for the report and Tim Graham for the review.
This commit is contained in:
parent
ad7f3c0b7b
commit
9390533951
@ -219,7 +219,10 @@ class SafeMIMEText(MIMEMixin, MIMEText):
|
|||||||
|
|
||||||
def set_payload(self, payload, charset=None):
|
def set_payload(self, payload, charset=None):
|
||||||
if charset == 'utf-8':
|
if charset == 'utf-8':
|
||||||
has_long_lines = any(len(l) > RFC5322_EMAIL_LINE_LENGTH_LIMIT for l in payload.splitlines())
|
has_long_lines = any(
|
||||||
|
len(l.encode('utf-8')) > RFC5322_EMAIL_LINE_LENGTH_LIMIT
|
||||||
|
for l in payload.splitlines()
|
||||||
|
)
|
||||||
# Quoted-Printable encoding has the side effect of shortening long
|
# Quoted-Printable encoding has the side effect of shortening long
|
||||||
# lines, if any (#22561).
|
# lines, if any (#22561).
|
||||||
charset = utf8_charset_qp if has_long_lines else utf8_charset
|
charset = utf8_charset_qp if has_long_lines else utf8_charset
|
||||||
|
@ -779,7 +779,8 @@ class BaseEmailBackendTests(HeadersCheckMixin, object):
|
|||||||
Message body containing longer lines are converted to Quoted-Printable
|
Message body containing longer lines are converted to Quoted-Printable
|
||||||
to avoid having to insert newlines, which could be hairy to do properly.
|
to avoid having to insert newlines, which could be hairy to do properly.
|
||||||
"""
|
"""
|
||||||
email = EmailMessage('Subject', "Comment ça va? " * 100, 'from@example.com', ['to@example.com'])
|
# Unencoded body length is < 998 (840) but > 998 when utf-8 encoded.
|
||||||
|
email = EmailMessage('Subject', 'В южных морях ' * 60, 'from@example.com', ['to@example.com'])
|
||||||
email.send()
|
email.send()
|
||||||
message = self.get_the_message()
|
message = self.get_the_message()
|
||||||
self.assertMessageHasHeaders(message, {
|
self.assertMessageHasHeaders(message, {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user