diff --git a/src/pretix/base/services/mail.py b/src/pretix/base/services/mail.py index 362461e9ac..4076bb4e71 100644 --- a/src/pretix/base/services/mail.py +++ b/src/pretix/base/services/mail.py @@ -114,6 +114,16 @@ def mail(email: str, subject: str, template: Union[str, LazyI18nString], subject = "[%s] %s" % (prefix, subject) body_plain += "\r\n\r\n-- \r\n" + + signature = str(event.settings.get('mail_text_signature')) + if signature: + signature = signature.format(event=event.name) + signature_md = signature.replace('\n', '
\n') + signature_md = bleach.linkify(bleach.clean(markdown.markdown(signature_md), tags=bleach.ALLOWED_TAGS + ['p', 'br'])) + htmlctx['signature'] = signature_md + body_plain += signature + body_plain += "\r\n\r\n-- \r\n" + body_plain += _( "You are receiving this email because you placed an order for {event}." ).format(event=event.name) diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 3e6b0c5082..abb8d0f3bf 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -191,6 +191,10 @@ DEFAULTS = { 'default': settings.MAIL_FROM, 'type': str }, + 'mail_text_signature': { + 'type': LazyI18nString, + 'default': "" + }, 'mail_text_resend_link': { 'type': LazyI18nString, 'default': LazyI18nString.from_gettext(ugettext_noop("""Hello, diff --git a/src/pretix/base/templates/pretixbase/email/plainwrapper.html b/src/pretix/base/templates/pretixbase/email/plainwrapper.html index 9e6ec4584e..2371b4bf40 100644 --- a/src/pretix/base/templates/pretixbase/email/plainwrapper.html +++ b/src/pretix/base/templates/pretixbase/email/plainwrapper.html @@ -148,6 +148,18 @@ {% endif %} + {% if signature %} + + + + + +
+ {{ signature | safe }} +
+ + + {% endif %}
diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index fac21e94aa..962693c081 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -474,6 +474,15 @@ class MailSettingsForm(SettingsForm): label=_("Sender address"), help_text=_("Sender address for outgoing emails") ) + + mail_text_signature = I18nFormField( + label=_("Signature"), + required=False, + widget=I18nTextarea, + help_text=_("This will be attached to every email. Available placeholders: {event}"), + validators=[PlaceholderValidator(['{event}'])] + ) + mail_text_order_placed = I18nFormField( label=_("Text"), required=False, diff --git a/src/pretix/control/templates/pretixcontrol/event/mail.html b/src/pretix/control/templates/pretixcontrol/event/mail.html index 986f5e8665..900cb038e0 100644 --- a/src/pretix/control/templates/pretixcontrol/event/mail.html +++ b/src/pretix/control/templates/pretixcontrol/event/mail.html @@ -10,6 +10,7 @@ {% trans "E-mail settings" %} {% bootstrap_field form.mail_prefix layout="horizontal" %} {% bootstrap_field form.mail_from layout="horizontal" %} + {% bootstrap_field form.mail_text_signature layout="horizontal" %}
{% trans "E-mail content" %} diff --git a/src/tests/base/test_mail.py b/src/tests/base/test_mail.py index 93d79a0215..082f2cc709 100644 --- a/src/tests/base/test_mail.py +++ b/src/tests/base/test_mail.py @@ -48,6 +48,18 @@ def test_send_mail_with_event_sender(env): assert djmail.outbox[0].from_email == 'foo@bar' +@pytest.mark.django_db +def test_send_mail_with_event_signature(env): + djmail.outbox = [] + event, user, organizer = env + event.settings.set('mail_text_signature', 'This is a test signature.') + mail('dummy@dummy.dummy', 'Test subject', 'mailtest.txt', {}, event) + + assert len(djmail.outbox) == 1 + assert djmail.outbox[0].to == [user.email] + assert 'This is a test signature.' in djmail.outbox[0].body + + @pytest.mark.django_db def test_send_mail_with_default_sender(env): djmail.outbox = []