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

@@ -3,6 +3,8 @@ from datetime import datetime
from django.conf import settings
from django.core.exceptions import ValidationError
from django.core.mail import get_connection
from django.core.mail.backends.smtp import EmailBackend
from django.core.validators import RegexValidator
from django.db import models
from django.template.defaultfilters import date as _date
@@ -181,6 +183,18 @@ class Event(LoggedModel):
return locking.LockManager(self)
def get_mail_backend(self, force_custom=False):
if self.settings.smtp_use_custom or force_custom:
return EmailBackend(host=self.settings.smtp_host,
port=self.settings.smtp_port,
username=self.settings.smtp_username,
password=self.settings.smtp_password,
use_tls=self.settings.smtp_use_tls,
use_ssl=self.settings.smtp_use_ssl,
fail_silently=False)
else:
return get_connection(fail_silently=False)
class EventPermission(models.Model):
"""

View File

@@ -65,16 +65,18 @@ def mail(email: str, subject: str, template: str,
)
body += "\r\n"
try:
return mail_send([email], subject, body, sender)
return mail_send([email], subject, body, sender, event.id)
finally:
translation.activate(_lng)
def mail_send(to: str, subject: str, body: str, sender: str) -> bool:
def mail_send(to: str, subject: str, body: str, sender: str, event: int) -> bool:
email = EmailMessage(subject, body, sender, to=to)
event = Event.objects.get(id=event)
backend = event.get_mail_backend()
try:
email.send(fail_silently=False)
backend.send_messages([email])
return True
except Exception:
logger.exception('Error sending e-mail')

View File

@@ -123,7 +123,35 @@ You can change your order details and view the status of your order at
Best regards,
Your {event} team"""))
}
},
'smtp_use_custom': {
'default': 'False',
'type': bool
},
'smtp_host': {
'default': '',
'type': str
},
'smtp_port': {
'default': 587,
'type': int
},
'smtp_username': {
'default': '',
'type': str
},
'smtp_password': {
'default': '',
'type': str
},
'smtp_use_tls': {
'default': 'True',
'type': bool
},
'smtp_use_ssl': {
'default': 'False',
'type': bool
},
}