Fixed several email handling str/bytes issues.

- Legacy-Id: 16334
This commit is contained in:
Henrik Levkowetz 2019-06-29 13:30:36 +00:00
parent 2b1f238204
commit 70c00950b6
2 changed files with 12 additions and 11 deletions

View file

@ -1,3 +1,4 @@
# Copyright The IETF Trust 2012-2019, All Rights Reserved
import re, datetime, email
from ietf.utils.mail import send_mail_text, send_mail_mime
@ -6,16 +7,16 @@ from ietf.message.models import Message
first_dot_on_line_re = re.compile(r'^\.', re.MULTILINE)
def infer_message(s):
parsed = email.message_from_string(s.encode("utf-8"))
parsed = email.message_from_string(s)
m = Message()
m.subject = parsed.get("Subject", "").decode("utf-8")
m.frm = parsed.get("From", "").decode("utf-8")
m.to = parsed.get("To", "").decode("utf-8")
m.cc = parsed.get("Cc", "").decode("utf-8")
m.bcc = parsed.get("Bcc", "").decode("utf-8")
m.reply_to = parsed.get("Reply-To", "").decode("utf-8")
m.body = parsed.get_payload().decode("utf-8")
m.subject = parsed.get("Subject", "")
m.frm = parsed.get("From", "")
m.to = parsed.get("To", "")
m.cc = parsed.get("Cc", "")
m.bcc = parsed.get("Bcc", "")
m.reply_to = parsed.get("Reply-To", "")
m.body = parsed.get_payload()
return m

View file

@ -113,7 +113,7 @@ def send_smtp(msg, bcc=None):
# advertise the AUTH capability.
server.ehlo()
server.login(settings.EMAIL_HOST_USER, settings.EMAIL_HOST_PASSWORD)
unhandled = server.sendmail(frm, to, msg.as_string())
unhandled = server.sendmail(frm, to, msg.as_bytes())
if unhandled != {}:
raise SMTPSomeRefusedRecipients(message="%d addresses were refused"%len(unhandled),original_msg=msg,refusals=unhandled)
except Exception as e:
@ -352,7 +352,7 @@ def send_mail_mime(request, to, frm, subject, msg, cc=None, extra=None, toUser=F
def parse_preformatted(preformatted, extra={}, override={}):
"""Parse preformatted string containing mail with From:, To:, ...,"""
msg = message_from_string(preformatted.encode("utf-8"))
msg = message_from_string(preformatted)
msg.set_charset('UTF-8')
for k, v in override.items():
@ -408,7 +408,7 @@ def send_mail_preformatted(request, preformatted, extra={}, override={}):
extra headers as needed)."""
(msg, extra, bcc) = parse_preformatted(preformatted, extra, override)
txt = msg.get_payload().decode(str(msg.get_charset()))
txt = msg.get_payload()
send_mail_text(request, msg['To'], msg["From"], msg["Subject"], txt, extra=extra, bcc=bcc)
return msg