From 200ce93bb4ac2cb249ba711c38525fa1744e6f0a Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 14 Aug 2019 10:28:53 +0200 Subject: [PATCH] Prevent autoresponders --- src/pretix/base/models/orders.py | 4 ++-- src/pretix/base/services/mail.py | 7 ++++++- src/pretix/control/views/orders.py | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index 3dbfe06d63..91e0561ef5 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -697,7 +697,7 @@ class Order(LockModel, LoggedModel): def send_mail(self, subject: str, template: Union[str, LazyI18nString], context: Dict[str, Any]=None, log_entry_type: str='pretix.event.order.email.sent', user: User=None, headers: dict=None, sender: str=None, invoices: list=None, - auth=None, attach_tickets=False, position: 'OrderPosition'=None): + auth=None, attach_tickets=False, position: 'OrderPosition'=None, auto_email=True): """ Sends an email to the user that placed this order. Basically, this method does two things: @@ -737,7 +737,7 @@ class Order(LockModel, LoggedModel): recipient, subject, template, context, self.event, self.locale, self, headers=headers, sender=sender, invoices=invoices, attach_tickets=attach_tickets, - position=position + position=position, auto_email=auto_email ) except SendMailException: raise diff --git a/src/pretix/base/services/mail.py b/src/pretix/base/services/mail.py index 2028845b92..7fcb126d88 100644 --- a/src/pretix/base/services/mail.py +++ b/src/pretix/base/services/mail.py @@ -51,7 +51,7 @@ class SendMailException(Exception): def mail(email: str, subject: str, template: Union[str, LazyI18nString], context: Dict[str, Any]=None, event: Event=None, locale: str=None, order: Order=None, position: OrderPosition=None, headers: dict=None, sender: str=None, - invoices: list=None, attach_tickets=False): + invoices: list=None, attach_tickets=False, auto_email=True): """ Sends out an email to a user. The mail will be sent synchronously or asynchronously depending on the installation. @@ -86,6 +86,8 @@ def mail(email: str, subject: str, template: Union[str, LazyI18nString], :param attach_tickets: Whether to attach tickets to this email, if they are available to download. + :param auto_email: Whether this email is auto-generated + :raises MailOrderException: on obvious, immediate failures. Not raising an exception does not necessarily mean that the email has been sent, just that it has been queued by the email backend. """ @@ -93,6 +95,9 @@ def mail(email: str, subject: str, template: Union[str, LazyI18nString], return headers = headers or {} + if auto_email: + headers['X-Auto-Response-Suppress'] = 'OOF, NRN, AutoReply, RN' + headers['Auto-Submitted'] = 'auto-generated' with language(locale): if isinstance(context, dict) and event: diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 9438159463..7c38ec6a59 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -1525,7 +1525,7 @@ class OrderSendMail(EventPermissionRequiredMixin, OrderViewMixin, FormView): order.send_mail( form.cleaned_data['subject'], email_template, email_context, 'pretix.event.order.email.custom_sent', - self.request.user + self.request.user, auto_email=False ) messages.success(self.request, _('Your message has been queued and will be sent to {}.'.format(order.email)))