forked from CGM_Public/pretix_original
Fixed #45: Custom SMTP server
This commit is contained in:
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user