Skip to content

Commit 70c0095

Browse files
committed
Fixed several email handling str/bytes issues.
- Legacy-Id: 16334
1 parent 2b1f238 commit 70c0095

2 files changed

Lines changed: 12 additions & 11 deletions

File tree

ietf/message/utils.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# Copyright The IETF Trust 2012-2019, All Rights Reserved
12
import re, datetime, email
23

34
from ietf.utils.mail import send_mail_text, send_mail_mime
@@ -6,16 +7,16 @@
67
first_dot_on_line_re = re.compile(r'^\.', re.MULTILINE)
78

89
def infer_message(s):
9-
parsed = email.message_from_string(s.encode("utf-8"))
10+
parsed = email.message_from_string(s)
1011

1112
m = Message()
12-
m.subject = parsed.get("Subject", "").decode("utf-8")
13-
m.frm = parsed.get("From", "").decode("utf-8")
14-
m.to = parsed.get("To", "").decode("utf-8")
15-
m.cc = parsed.get("Cc", "").decode("utf-8")
16-
m.bcc = parsed.get("Bcc", "").decode("utf-8")
17-
m.reply_to = parsed.get("Reply-To", "").decode("utf-8")
18-
m.body = parsed.get_payload().decode("utf-8")
13+
m.subject = parsed.get("Subject", "")
14+
m.frm = parsed.get("From", "")
15+
m.to = parsed.get("To", "")
16+
m.cc = parsed.get("Cc", "")
17+
m.bcc = parsed.get("Bcc", "")
18+
m.reply_to = parsed.get("Reply-To", "")
19+
m.body = parsed.get_payload()
1920

2021
return m
2122

ietf/utils/mail.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def send_smtp(msg, bcc=None):
113113
# advertise the AUTH capability.
114114
server.ehlo()
115115
server.login(settings.EMAIL_HOST_USER, settings.EMAIL_HOST_PASSWORD)
116-
unhandled = server.sendmail(frm, to, msg.as_string())
116+
unhandled = server.sendmail(frm, to, msg.as_bytes())
117117
if unhandled != {}:
118118
raise SMTPSomeRefusedRecipients(message="%d addresses were refused"%len(unhandled),original_msg=msg,refusals=unhandled)
119119
except Exception as e:
@@ -352,7 +352,7 @@ def send_mail_mime(request, to, frm, subject, msg, cc=None, extra=None, toUser=F
352352

353353
def parse_preformatted(preformatted, extra={}, override={}):
354354
"""Parse preformatted string containing mail with From:, To:, ...,"""
355-
msg = message_from_string(preformatted.encode("utf-8"))
355+
msg = message_from_string(preformatted)
356356
msg.set_charset('UTF-8')
357357

358358
for k, v in override.items():
@@ -408,7 +408,7 @@ def send_mail_preformatted(request, preformatted, extra={}, override={}):
408408
extra headers as needed)."""
409409

410410
(msg, extra, bcc) = parse_preformatted(preformatted, extra, override)
411-
txt = msg.get_payload().decode(str(msg.get_charset()))
411+
txt = msg.get_payload()
412412
send_mail_text(request, msg['To'], msg["From"], msg["Subject"], txt, extra=extra, bcc=bcc)
413413
return msg
414414

0 commit comments

Comments
 (0)