Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/BradWhittington/django-mailgun
This project is deprecated in favor of https://github.com/anymail/django-anymail
https://github.com/BradWhittington/django-mailgun
Last synced: about 1 month ago
JSON representation
This project is deprecated in favor of https://github.com/anymail/django-anymail
- Host: GitHub
- URL: https://github.com/BradWhittington/django-mailgun
- Owner: BradWhittington
- License: mit
- Archived: true
- Created: 2011-03-16T10:14:39.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2020-03-08T00:10:34.000Z (almost 5 years ago)
- Last Synced: 2024-05-22T15:08:56.854Z (7 months ago)
- Language: Python
- Homepage:
- Size: 75.2 KB
- Stars: 217
- Watchers: 9
- Forks: 92
- Open Issues: 6
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.rst
- License: LICENSE
Awesome Lists containing this project
- starred-awesome - django-mailgun - This project is deprecated in favor of https://github.com/anymail/django-anymail (Python)
README
**This project is unsupported. Please use https://github.com/anymail/django-anymail instead.**
==============
Django-Mailgun
==============A Django email backend for use with Mailgun
Overview
=================
Django-Mailgun is a drop-in mail backend for Django_.Getting going
=============Install django-mailgun::
pip install django-mailgun
Add the following to your ``settings.py``::
EMAIL_BACKEND = 'django_mailgun.MailgunBackend'
MAILGUN_ACCESS_KEY = 'ACCESS-KEY'
MAILGUN_SERVER_NAME = 'SERVER-NAME'Replace ``ACCESS-KEY`` with the "API-KEY" value from your Mailgun account details and
``SERVER-NAME`` with the last part of your "API Base URL"
(eg. https://api.mailgun.net/v3/****), also found in your Mailgun
account details.Now, when you use ``django.core.mail.send_mail``, Mailgun will send the messages.
.. _Builtin Email Error Reporting: http://docs.djangoproject.com/en/1.2/howto/error-reporting/
.. _Django: http://djangoproject.com
.. _Mailgun: http://mailgun.netExtra features
=================Passing user-specific data
--------------------------Mailgun also includes the ability to send emails to a group of recipients via a single
API call (https://documentation.mailgun.com/user_manual.html#batch-sending). 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 protected]', [[email protected], [email protected]])
email.extra_headers['recipient_variables'] = '{"[email protected]":{"first_name":"Joe"}, "[email protected]":{"first_name":"Jane"}}'
email.send()When Jane receives her email, its body should read 'Cool message for Jane', and Joe will see
'Cool message 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 https://documentation.mailgun.com/api-sending.html#sending). These
options can also be passed to Mailgun's SMTP server (see "Passing Sending Options" under
https://documentation.mailgun.com/user_manual.html#sending-via-smtp). 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 protected]', [[email protected]])
email.extra_headers['X-Mailgun-Tag'] = ['Tag 1', 'Tag 2']
email.send()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.Attaching data to messages
--------------------------When sending, you can attach data to your messages by passing custom data to X-Mailgun-Variables header
(see https://documentation.mailgun.com/user_manual.html#attaching-data-to-messages).
Data should be formatted as JSON, and it will be included in any webhook event releated to the email
containing the custom data. For example::email = EmailMessage('Hi!', 'Cool message for Joe', '[email protected]', [[email protected]])
email.extra_headers['X-Mailgun-Variables'] = {'my-id': 'email_id', 'my-variable':'variable'}
email.send()Later, you can read this data in your Mailgun webhook handler. For example::
def mailgun_webhook(request):
email_id = request.data.get('my-id')
my_variable = request.data.get('my-variable')# Do something with your variables
return Response(status=status.HTTP_200_OK)
*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 (https://documentation.mailgun.com/user_manual.html#tagging). 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.Django Email Backend Reference
================================* http://docs.djangoproject.com/en/dev/topics/email/#e-mail-backends