31 lines
948 B
Python
31 lines
948 B
Python
# coding: utf-8
|
|
from django.core.mail.backends.base import BaseEmailBackend
|
|
from django.utils.encoding import force_text
|
|
|
|
from .logger import logger
|
|
from .tasks import send_message
|
|
|
|
|
|
def _get_message_recipients(email_message):
|
|
message_recipients = getattr(email_message, 'to', None)
|
|
if not isinstance(message_recipients, list):
|
|
return 'unknown'
|
|
return ', '.join(map(force_text, message_recipients))
|
|
|
|
|
|
class EmailBackend(BaseEmailBackend):
|
|
def __init__(self, fail_silently=False, **kwargs):
|
|
super(EmailBackend, self).__init__(fail_silently, **kwargs)
|
|
|
|
def send_messages(self, email_messages):
|
|
num_sent = 0
|
|
|
|
for email in email_messages:
|
|
try:
|
|
send_message.apply_async([email, ])
|
|
num_sent += 1
|
|
except Exception as e:
|
|
logger.error("cannot send message to '%s': %r" % (_get_message_recipients(email), e))
|
|
|
|
return num_sent
|