12+ Django Packages that help manage email sending

Django-celery-email/

Django-celery-email - Python

400

A Django email backend that uses a celery task for sending the email.

CELERY_EMAIL_TASK_CONFIG = {
    'queue' : 'email',
    'rate_limit' : '50/m',  # * CELERY_EMAIL_CHUNK_SIZE (default: 10)
    ...
}
celery django python

 

Django-db-mailer/

Django-db-mailer - Python

242

Django module to easily send emails/sms/tts/push using django templates stored on database and managed through the Django Admin

Mail API

from dbmail.models import MailTemplate
from dbmail import send_db_mail

# New dbmail template
MailTemplate.objects.create(
    name="Site welcome template",
    subject="[{{prefix}}] Welcome {{full_name}}!",
    message="Hi, {{username}}. Welcome to our site.",
    slug="welcome",
    is_html=False,
)

# Send message with created template
send_db_mail(
    # slug which defined on db template
    slug='welcome',

    # recipient can be list, or str separated with comma or simple string
    # '[email protected]' or '[email protected], [email protected]' or
    # ['[email protected]', '[email protected]'] or string Mail group slug
    recipient='[email protected]',

    # All *args params will be accessible on template context
    {
        'username': request.user.username,
        'full_name': request.user.get_full_name(),
        'signup_date': request.user.date_joined,
        'prefix': "DbMail",
    },

    # You can access to all model fields. For m2m and fk fields, you should use module_name
    MyModel.objects.get(pk=1),

    # Optional kwargs:
    # backend='dbmail.backends.mail',
    # provider='apps.utils.some.mail.provider',
    # from_email='[email protected]'
    # cc=['[email protected]'],
    # bcc=['[email protected]'],
    # user=User.objects.get(pk=1),
    #
    # language='ru',
    #
    # attachments=[(filename, content, mimetype)],
    # files=['hello.jpg', 'world.png'],
    # headers={'Custom-Header':'Some value'},
    #
    # queue='default',
    # retry_delay=300,
    # max_retries=3,
    # retry=True,
    # time_limit=30,
    # send_after=60,
    #
    # use_celery=True,
)
Django-db-mailer/

 

Django-drip

Django-drip - Python

626

Use Django admin to manage drip campaign emails using querysets on Django's User model.

Next, you'll want to add drip to your INSTALLED_APPS in settings.py.

INSTALLED_APPS = (
    'django.contrib.contenttypes',
    'django.contrib.comments',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',

    # Your favorite apps

    'drip',
)
Django-drip
featured

 

Django-email-extras

Django-email-extras - Python

74

PGP encrypted / multipart templated emails for Django

send_mail_template(subject, template, addr_from, addr_to,
    fail_silently=False, attachments=None, context=None,
    headers=None)

 

 

Django-email-gateway

Django-email-gateway - Python

25

A django package which act as a gateway to send and receive email with amazon SES.

Use pip to install easily with one step:

$ pip install django-email-gateway
git clone git://github.com/micropyramid/django-email-gateway.git

cd django-email-gateway

python setup.py install
amazon-ses email-notification ses

 

This project is deprecated in favor of https://github.com/anymail/django-anymail

Features

Passing user-specific data
EMAIL_BACKEND = 'django_mailgun.MailgunBackend'
MAILGUN_ACCESS_KEY = 'ACCESS-KEY'
MAILGUN_SERVER_NAME = 'SERVER-NAME'

 

 

Django-post office/

Django-post office - Python

755

A Django app that allows you to send email asynchronously in Django. Supports HTML email, database backed templates and logging.

Send a simple email is really easy:

from post_office import mail

mail.send(
    '[email protected]', # List of email addresses also accepted
    '[email protected]',
    subject='My email',
    message='Hi there!',
    html_message='Hi <strong>there</strong>!',
)

 

 

A Django email backend for Amazon's Simple Email Service

EMAIL_BACKEND = 'django_ses.SESBackend'

# These are optional -- if they're set as environment variables they won't
# need to be set here as well
AWS_ACCESS_KEY_ID = 'YOUR-ACCESS-KEY-ID'
AWS_SECRET_ACCESS_KEY = 'YOUR-SECRET-ACCESS-KEY'

# Additionally, if you are not using the default AWS region of us-east-1,
# you need to specify a region, like so:
AWS_SES_REGION_NAME = 'us-west-2'
AWS_SES_REGION_ENDPOINT = 'email.us-west-2.amazonaws.com'

 

 

Django-spoolgore

Django-spoolgore - Python

6

A django email backed for the Spoolgore daemon

 

Django-templated-email

Django-templated-email - Python

613

Django module to easily send templated emails using django templates, or using a transactional mail provider (mailchimp, silverpop, etc.)

You can add the following to your settings.py (but it works out the box):

TEMPLATED_EMAIL_BACKEND = 'templated_email.backends.vanilla_django.TemplateBackend'

# You can use a shortcut version
TEMPLATED_EMAIL_BACKEND = 'templated_email.backends.vanilla_django'

# You can also use a class directly
from templated_email.backends.vanilla_django import TemplateBackend
TEMPLATED_EMAIL_BACKEND = TemplateBackend

 

Django-yubin

Django-yubin - Python

40

Send e-mails asyncronously using cron

django mail mailer python

 

Simple, powerfull and nonobstructive django email middleware.

 

[INACTIVE/UNMAINTAINED] Djrill is an email backend and new message class for Django users that want to take advantage of the Mandrill transactional email service from MailChimp.

Edit your project's settings.py:

INSTALLED_APPS = (
    ...
    "djrill"
)

MANDRILL_API_KEY = "<your Mandrill key>"
EMAIL_BACKEND = "djrill.mail.backends.djrill.DjrillBackend"
DEFAULT_FROM_EMAIL = "[email protected]"  # if you don't already have this in settings