diff --git a/src/pretix/api/serializers/event.py b/src/pretix/api/serializers/event.py
index 2e9cb1a4d1..ed7cc2f340 100644
--- a/src/pretix/api/serializers/event.py
+++ b/src/pretix/api/serializers/event.py
@@ -589,6 +589,7 @@ class EventSettingsSerializer(serializers.Serializer):
'ticket_download_addons',
'ticket_download_nonadm',
'ticket_download_pending',
+ 'ticket_download_require_validated_email',
'mail_prefix',
'mail_from',
'mail_from_name',
diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py
index f892307aff..f02bff993e 100644
--- a/src/pretix/base/models/orders.py
+++ b/src/pretix/base/models/orders.py
@@ -2067,7 +2067,7 @@ class OrderPosition(AbstractPosition):
user: User=None, headers: dict=None, sender: str=None, invoices: list=None,
auth=None, attach_tickets=False):
"""
- Sends an email to the user that placed this order. Basically, this method does two things:
+ Sends an email to the attendee. Basically, this method does two things:
* Call ``pretix.base.services.mail.mail`` with useful values for the ``event``, ``locale``, ``recipient`` and
``order`` parameters.
diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py
index c96177b93c..fbbdb647fc 100644
--- a/src/pretix/base/settings.py
+++ b/src/pretix/base/settings.py
@@ -971,6 +971,19 @@ DEFAULTS = {
'data-checkbox-dependency-visual': 'on'}),
)
},
+ 'ticket_download_require_validated_email': {
+ 'default': 'False',
+ 'type': bool,
+ 'serializer_class': serializers.BooleanField,
+ 'form_class': forms.BooleanField,
+ 'form_kwargs': dict(
+ label=_("Do not issue ticket before email address is validated"),
+ help_text=_("If turned on, tickets will not be offered for download directly after purchase. They will "
+ "be attached to the payment confirmation email (if the file size is not too large), and the "
+ "customer will be able to download them from the page as soon as they clicked a link in "
+ "the email. Does not affect orders performed through other sales channels."),
+ )
+ },
'event_list_availability': {
'default': 'True',
'type': bool
diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py
index 1dba08019a..6fece0375a 100644
--- a/src/pretix/control/forms/event.py
+++ b/src/pretix/control/forms/event.py
@@ -1067,6 +1067,7 @@ class TicketSettingsForm(SettingsForm):
'ticket_download_addons',
'ticket_download_nonadm',
'ticket_download_pending',
+ 'ticket_download_require_validated_email',
]
def prepare_fields(self):
diff --git a/src/pretix/control/templates/pretixcontrol/event/tickets.html b/src/pretix/control/templates/pretixcontrol/event/tickets.html
index 158d706a0e..9734b4c14a 100644
--- a/src/pretix/control/templates/pretixcontrol/event/tickets.html
+++ b/src/pretix/control/templates/pretixcontrol/event/tickets.html
@@ -22,6 +22,7 @@
{% bootstrap_field form.ticket_download_addons layout="control" horizontal_label_class='sr-only' horizontal_field_class='col-md-12' %}
{% bootstrap_field form.ticket_download_nonadm layout="control" horizontal_label_class='sr-only' horizontal_field_class='col-md-12' %}
{% bootstrap_field form.ticket_download_pending layout="control" horizontal_label_class='sr-only' horizontal_field_class='col-md-12' %}
+ {% bootstrap_field form.ticket_download_require_validated_email layout="control" horizontal_label_class='sr-only' horizontal_field_class='col-md-12' %}