1
0
mirror of https://github.com/django/django.git synced 2025-02-04 22:47:53 +00:00

[5.0.x] Refs #34900, Refs #35361 -- Fixed SafeMIMEText.set_payload() crash on Python 3.13.

Payloads with surrogates are passed to the set_payload() since
f97f25ef5d

Backport of b231bcd19e57267ce1fc21d42d46f0b65fdcfcf8 from main.
This commit is contained in:
Mariusz Felisiak 2024-03-15 12:51:40 +01:00 committed by Sarah Boyce
parent f075a19e85
commit 2e6ae1e96a

View File

@ -168,7 +168,8 @@ class SafeMIMEText(MIMEMixin, MIMEText):
def set_payload(self, payload, charset=None):
if charset == "utf-8" and not isinstance(charset, Charset.Charset):
has_long_lines = any(
len(line.encode()) > RFC5322_EMAIL_LINE_LENGTH_LIMIT
len(line.encode(errors="surrogateescape"))
> RFC5322_EMAIL_LINE_LENGTH_LIMIT
for line in payload.splitlines()
)
# Quoted-Printable encoding has the side effect of shortening long