SMTP config: Do not accept non-ASCII passwords (Z#23186129) (#4922)

* SMTP config: Do not accept non-ASCII passwords

Python's SMTP implementation can't seem to handle non-ascii passwords,
so let's not let people enter them.

* Update src/pretix/control/forms/mailsetup.py

Co-authored-by: Mira <weller@rami.io>

---------

Co-authored-by: Mira <weller@rami.io>
This commit is contained in:
Raphael Michel
2025-03-19 10:25:19 +01:00
committed by GitHub
parent 9ca0e41c5f
commit 67b65bf67d

View File

@@ -25,6 +25,8 @@ import socket
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
from django.utils.text import format_lazy
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from pretix.base.forms import SecretKeySettingsField, SettingsForm from pretix.base.forms import SecretKeySettingsField, SettingsForm
@@ -54,6 +56,15 @@ class SMTPMailForm(SettingsForm):
smtp_password = SecretKeySettingsField( smtp_password = SecretKeySettingsField(
label=_("Password"), label=_("Password"),
required=False, required=False,
validators=[RegexValidator(
r"^[A-Za-z0-9!\"#$%&'()*+,./:;<=>?@\^_`{}|~-]+$",
message=format_lazy(
_("The password contains characters not supported by our email system. Please only use characters "
"A-Z, a-z, 0-9, and common special characters ({characters})."),
characters=r'!"#$%%&\'()*+,-./:;<=>?@\^_`{}|~'
)
)]
) )
smtp_use_tls = forms.BooleanField( smtp_use_tls = forms.BooleanField(
label=_("Use STARTTLS"), label=_("Use STARTTLS"),