Fix charset handling in MailSender #5096 (#5118)

This commit is contained in:
Maria Mitropoulou 2023-09-07 08:47:42 +03:00 committed by GitHub
parent 00527fdcbe
commit 721df895f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 5 deletions

View File

@ -96,10 +96,9 @@ class MailSender:
rcpts.extend(cc)
msg["Cc"] = COMMASPACE.join(cc)
if charset:
msg.set_charset(charset)
if attachs:
if charset:
msg.set_charset(charset)
msg.attach(MIMEText(body, "plain", charset or "us-ascii"))
for attach_name, mimetype, f in attachs:
part = MIMEBase(*mimetype.split("/"))
@ -110,7 +109,7 @@ class MailSender:
)
msg.attach(part)
else:
msg.set_payload(body)
msg.set_payload(body, charset)
if _callback:
_callback(to=to, subject=subject, body=body, cc=cc, attach=attachs, msg=msg)

View File

@ -111,7 +111,7 @@ class MailSenderTest(unittest.TestCase):
msg = self.catched_msg["msg"]
self.assertEqual(msg["subject"], subject)
self.assertEqual(msg.get_payload(), body)
self.assertEqual(msg.get_payload(decode=True).decode("utf-8"), body)
self.assertEqual(msg.get_charset(), Charset("utf-8"))
self.assertEqual(msg.get("Content-Type"), 'text/plain; charset="utf-8"')