From 04342b3a0195c7eb7a709b9e1963c2f023b359e8 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 1 Jul 2020 13:32:31 +0000 Subject: [PATCH] Decode header fields before sending email Message.items() returns raw header values, with continuation lines and encoded words. Decode them before calling EmailMessage.add_header because this function expects decoded values. --- gitsrht/blueprints/email.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gitsrht/blueprints/email.py b/gitsrht/blueprints/email.py index 9e54196..634fe34 100644 --- a/gitsrht/blueprints/email.py +++ b/gitsrht/blueprints/email.py @@ -8,6 +8,7 @@ import sys from email.policy import SMTPUTF8, SMTP from email.utils import make_msgid, parseaddr from email.message import EmailMessage +from email.header import decode_header, make_header from flask import Blueprint, render_template, abort, request, url_for, session from flask import redirect from gitsrht.git import Repository as GitRepository, commit_time, diffstat @@ -305,6 +306,7 @@ def send_email_send(owner, repo): for i, email in enumerate(emails): encoded = EmailMessage(policy=SMTP.clone(cte_type='7bit')) for (k, v) in email.items(): + v = str(make_header(decode_header(v))) encoded.add_header(k, v) body = email.get_payload(decode=True).decode() encoded.set_content(body) -- 2.38.4