repos
/ timestrap-django master

timestrap-django

mirror archived upstream

Time tracking you can host anywhere, built on Django. Full export support in multiple formats and easily extensible.

djangodockerhandcodedpythonself-hostedtime-trackingtimetracker

1.2 KB · 39 lines · Python Raw History
 1from smtplib import SMTPResponseException
 2from socket import error as socket_error
 3
 4from django.core.mail.backends.smtp import EmailBackend as DjangoEmailBackend
 5
 6from conf.utils import get_site_setting
 7
 8
 9class EmailBackend(DjangoEmailBackend):
10    """
11    Handles emails using Site-based settings from Conf.
12    """
13
14    def __init__(self, fail_silently=False, **kwargs):
15        super().__init__(
16            host=get_site_setting("smtp_host"),
17            port=get_site_setting("smtp_port"),
18            username=get_site_setting("smtp_user"),
19            password=get_site_setting("smtp_password"),
20            use_tls=get_site_setting("use_tls"),
21            fail_silently=fail_silently,
22            **kwargs
23        )
24
25    def send_messages(self, email_messages):
26        """
27        Override the from_email property all email messages.
28        """
29        if not email_messages:
30            return
31        with self._lock:
32            for message in email_messages:
33                message.from_email = get_site_setting("smtp_from_address")
34        try:
35            super().send_messages(email_messages)
36        except (SMTPResponseException, socket_error) as e:
37            # TODO: Determine how to handle failures gracefully.
38            raise e