Send emails using Django template system
Python Shell Smarty HTML
Clone or download


Django Mail Templated

Send emails using Django template system

Documentation Status PyPI Package CircleCI Status

This is a tiny wrapper around the standard EmailMessage class and send_mail() function that provides an easy way to create email messages using the Django template system. Just pass template_name and context as the first parameters then use as normal.


  • Built with OOP, KISS and flexibility in mind. Really small and simple, but yet full-featured (I hope).
  • Extends and mimics the built-in Django's EmailMessage and send_mail(). Compatible as much as possible.
  • Fully supports Django template system including template inheritance (thanks to BradWhittington for the note about the problem).
  • Supports any possible template engines and loaders.
  • Supports serialisation (thanks to arjandepooter).
  • Fully covered with tests.
  • Tested with Django 1.4-1.10.
  • Compatible with Python 2 and Python 3.


Quick start


pip install django-mail-templated

And register the app in your settings file:


Create template:

{% extends "mail_templated/base.tpl" %}

{% block subject %}
Hello {{ }}
{% endblock %}

{% block body %}
{{ }}, this is a plain text message.
{% endblock %}

{% block html %}
{{ }}, this is an <strong>html</strong> message.
{% endblock %}

Send message:

from mail_templated import send_mail
send_mail('email/hello.tpl', {'user': user}, from_email, [])

Advanced usage:

from mail_templated import EmailMessage

message = EmailMessage('email/hello.tpl', {'user': user}, from_email,
# TODO: Add more useful commands here.

More useful info and examples at