From 9879e99c599d18f750feeb02dc42904d0a7ff383 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 3 Feb 2026 18:12:12 +0100 Subject: [PATCH] Outgoing mail: Decode unicode in From headers (#5864) --- .../templates/pretixcontrol/organizers/outgoing_mail.html | 2 +- src/pretix/control/views/mail.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html b/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html index fc3ea19108..8ba0cf854c 100644 --- a/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html +++ b/src/pretix/control/templates/pretixcontrol/organizers/outgoing_mail.html @@ -19,7 +19,7 @@
{% trans "From" context "email" %}
-
{{ mail.sender }}
+
{{ sender }}
{% trans "To" context "email" %}
{{ mail.to|join:", " }}
{% if mail.cc %} diff --git a/src/pretix/control/views/mail.py b/src/pretix/control/views/mail.py index de25215d34..b9c0c03368 100644 --- a/src/pretix/control/views/mail.py +++ b/src/pretix/control/views/mail.py @@ -21,6 +21,8 @@ # import base64 import logging +from email.header import decode_header, make_header +from email.utils import parseaddr from django.conf import settings from django.contrib import messages @@ -124,6 +126,12 @@ class OutgoingMailDetailView(OrganizerDetailViewMixin, OrganizerPermissionRequir ctx = super().get_context_data(**kwargs) if self.object.body_html: ctx['data_url'] = "data:text/html;charset=utf-8;base64," + base64.b64encode(self.object.body_html.encode()).decode() + + from_name, from_email = parseaddr(self.object.sender) + if from_name: + from_name = make_header(decode_header(from_name)) + ctx['sender'] = "{} <{}>".format(from_name, from_email) if from_name else from_email + return ctx