Skip to content

Instantly share code, notes, and snippets.

@mjtorn
Created March 21, 2014 08:51
Show Gist options
  • Save mjtorn/9682210 to your computer and use it in GitHub Desktop.
Save mjtorn/9682210 to your computer and use it in GitHub Desktop.
email_combo_backend.py
# vim: fileencoding=utf-8
from django.core.mail.backends.base import BaseEmailBackend
from django.core.mail import get_connection
from django.conf import settings
import logging
logger = logging.getLogger('django')
CONN1 = getattr(settings, 'COMBO_MAILER_BACKEND1', 'mailer.backend.DbBackend')
CONN2 = getattr(settings, 'COMBO_MAILER_BACKEND2', 'django.core.mail.backends.smtp.EmailBackend')
BACKEND1 = get_connection(CONN1)
BACKEND2 = get_connection(CONN2)
class ComboBackend(BaseEmailBackend):
"""Write to the db first and failing that do the smtp
"""
def send_messages(self, email_messages):
"""Needs to call get_connection() because inheritance caused
problems no one cares about when it's a cunt hair to fucking midnight
"""
try:
logger.info('Send using %s' % CONN1)
return BACKEND1.send_messages(email_messages)
except Exception, e:
logger.error('Caught exception "%s"' % e)
logger.info('Send using backup connection %s' % CONN2)
return BACKEND2.send_messages(email_messages)
# EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment