skip to navigation
skip to content

Not Logged In

django-mailgun 0.8.0

A Django email backend for Mailgun

A Django email backend for use with Mailgun


Django-Mailgun is a drop-in mail backend for Django.

Getting going

Install django-mailgun:

pip install django-mailgun

Add the following to your

EMAIL_BACKEND = 'django_mailgun.MailgunBackend'

Now, when you use django.core.mail.send_mail, Mailgun will send the messages.

Extra features

Passing user-specific data

Mailgun also includes the ability to send emails to a group of recipients via a single API call ( To make use of this, you need to pass Recipient Variables along with your API call. To do so with Django-Mailgun, add a valid json string to the extra_headers attribute of EmailMessage and Django-Mailgun will remove the string from the headers and send it appropriately. For example:

email = EmailMessage('Hi!', 'Cool message for %recipient.first_name%', '', [,])
email.extra_headers['recipient_variables'] = '{"":{"first_name":"Joe"}, "":{"first_name":"Jane"}}'

When Jane receives her email, its body should read ‘Cool message for Jane’, and Joe will see ‘Cool messagae for Joe’.

Analytics and other tracking features

Mailgun provides the ability to track certain events that concern your emails. The API exposes these options (see These options can also be passed to Mailgun’s SMTP server (see “Passing Sending Options” under If you add any of the SMTP options to the extra_headers attribute of EmailMessage, Django-Mailgun will map those values over to the appropriate API parameter. For example:

email = EmailMessage('Hi!', 'Cool message for Joe', '', [])
email.extra_headers['X-Mailgun-Tag'] = ['Tag 1', 'Tag 2']

When the email is sent, it will be tagged with ‘Tag 1’ and ‘Tag 2’. You can provide a string for any value, or a list or tuple that contains strings for options that can take multiple values.

NOTE: Django-Mailgun does NOT validate your data for compliance with Mailgun’s API; it merely maps over whatever values you provide. For example, Mailgun’s API states that no more than 3 tags are allowed per email, and each tag must be no greater than 128 characters ( If you provide 4 tags, or a tag longer than 128 characters, Django-Mailgun will attempt to send such (potentially) invalid data. You must ensure what you send is appropriate.

File Type Py Version Uploaded on Size
django-mailgun-0.8.0.tar.gz (md5) Source 2015-10-09 5KB
django_mailgun-0.8.0-py2.py3-none-any.whl (md5) Python Wheel 2.7 2015-10-09 6KB
  • Downloads (All Versions):
  • 494 downloads in the last day
  • 3273 downloads in the last week
  • 9191 downloads in the last month