from django.core.mail.backends.base import BaseEmailBackend from .models import Message from .tasks import send_message class EmailBackend(BaseEmailBackend): """ A wrapper that manages a queued SMTP system. """ def send_messages(self, email_messages): if not email_messages: return num_sent = 0 is_bulk = len(email_messages) > 1 for message in email_messages: priority = message.extra_headers.get('X-Mail-Priority', Message.NORMAL) content = message.message().as_string() for to_email in message.recipients(): message = Message.objects.create( priority=priority, to_address=to_email, from_address=message.from_email, subject=message.subject, content=content, ) if not is_bulk or priority == Message.CRITICAL: # send immidiately send_message.apply_async(message) num_sent += 1 return num_sent