Fixed #45: Custom SMTP server

This commit is contained in:
Raphael Michel
2015-12-13 17:56:35 +01:00
parent 7e69d8ea10
commit a114aa11f4
7 changed files with 110 additions and 8 deletions

View File

@@ -212,6 +212,38 @@ class MailSettingsForm(SettingsForm):
widget=I18nTextarea,
help_text=_("Available placeholders: {event}, {url}")
)
smtp_use_custom = forms.BooleanField(
label=_("Use custom SMTP server"),
help_text=_("All mail related to your event will be sent over the smtp server specified by you."),
required=False
)
smtp_host = forms.CharField(
label=_("Hostname"),
required=False
)
smtp_port = forms.IntegerField(
label=_("Port"),
required=False
)
smtp_username = forms.CharField(
label=_("Username"),
required=False
)
smtp_password = forms.CharField(
label=_("Password"),
required=False,
widget=forms.PasswordInput
)
smtp_use_tls = forms.BooleanField(
label=_("Use STARTTLS"),
help_text=_("Commonly enabled on port 587."),
required=False
)
smtp_use_ssl = forms.BooleanField(
label=_("Use SSL"),
help_text=_("Commonly enabled on port 465."),
required=False
)
class TicketSettingsForm(SettingsForm):

View File

@@ -15,10 +15,23 @@
{% bootstrap_field form.mail_text_order_placed layout="horizontal" %}
{% bootstrap_field form.mail_text_order_paid layout="horizontal" %}
</fieldset>
<fieldset>
<legend>{% trans "SMTP settings" %}</legend>
{% bootstrap_field form.smtp_use_custom layout="horizontal" %}
{% bootstrap_field form.smtp_host layout="horizontal" %}
{% bootstrap_field form.smtp_port layout="horizontal" %}
{% bootstrap_field form.smtp_username layout="horizontal" %}
{% bootstrap_field form.smtp_password layout="horizontal" %}
{% bootstrap_field form.smtp_use_tls layout="horizontal" %}
{% bootstrap_field form.smtp_use_ssl layout="horizontal" %}
</fieldset>
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %}
</button>
<button type="submit" class="btn btn-default btn-save pull-left" name="test" value="1">
{% trans "Save and test custom SMTP connection" %}
</button>
</div>
</form>
{% endblock %}

View File

@@ -235,7 +235,20 @@ class MailSettings(EventPermissionRequiredMixin, FormView):
k: form.cleaned_data.get(k) for k in form.changed_data
}
)
messages.success(self.request, _('Your changes have been saved.'))
if request.POST.get('test', '0').strip() == '1':
backend = self.request.event.get_mail_backend(force_custom=True)
try:
backend.open()
except Exception as e:
messages.warning(self.request, _('An error occured while contacting the SMTP server: %s') % str(e))
else:
messages.success(self.request, _('Your changes have been saved and the connection attempt to '
'your SMTP server was successful.'))
finally:
backend.close()
else:
messages.success(self.request, _('Your changes have been saved.'))
return redirect(self.get_success_url())
else:
return self.get(request)