# HG changeset patch # User Mads Kiilerich # Date 2020-11-04 01:20:24 # Node ID 8bba2d253187a177af5a34a1b446fb485f6d95ff # Parent ad239692ea9570bdb125dc252990d989ff9157ed mail: migrate to modern email.message instead of using old compat32 functionality Before, the HTML part could be detected as pure 7-bit and sent as: Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: 7bit Now, it will use: Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable That should work fine too. diff --git a/kallithea/lib/celerylib/tasks.py b/kallithea/lib/celerylib/tasks.py --- a/kallithea/lib/celerylib/tasks.py +++ b/kallithea/lib/celerylib/tasks.py @@ -26,8 +26,7 @@ Original author and date, and relevant c :license: GPLv3, see LICENSE.md for more details. """ -import email.mime.multipart -import email.mime.text +import email.message import email.utils import os import smtplib @@ -310,7 +309,7 @@ def send_email(recipients, subject, body log.warning(logmsg) return False - msg = email.mime.multipart.MIMEMultipart('alternative') + msg = email.message.EmailMessage() msg['Subject'] = subject msg['From'] = app_email_from # fallback - might be overridden by a header msg['To'] = ', '.join(recipients) @@ -320,8 +319,8 @@ def send_email(recipients, subject, body del msg[key] # Delete key first to make sure add_header will replace header (if any), no matter the casing msg.add_header(key, value) - msg.attach(email.mime.text.MIMEText(body, 'plain')) - msg.attach(email.mime.text.MIMEText(html_body, 'html')) + msg.set_content(body) + msg.add_alternative(html_body, subtype='html') try: if smtp_use_ssl: