~edwargix/git.sr.ht

04342b3a0195c7eb7a709b9e1963c2f023b359e8 — Simon Ser 5 years ago fc809ba
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.
1 files changed, 2 insertions(+), 0 deletions(-)

M gitsrht/blueprints/email.py
M gitsrht/blueprints/email.py => gitsrht/blueprints/email.py +2 -0
@@ 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)