Skip to main content

mitol-django-mail

This is the Open Learning Django Mail app. It provides a few key features around mail:

  • Templated multipart html emails
  • Automatic generation of plaintext portion of multipart email
  • CSS inlining for email html

Getting started

pip install mitol-django-mail

Add the mail app:

INSTALLED_APPS = [
    ...
    "mitol.mail.apps.MailApp",
]

Settings

Common Django settings

  • SITE_BASE_URL - the website's host url, including the protocol (e.g. "https://example.com/")
  • SITE_NAME - the website's name

Mail app settings

All settings for the mitol-django-mail app are namespaced in django settings with MITOL_MAIL_ prefix.

  • MITOL_MAIL_FROM_EMAIL - the default from email for all messages
  • MITOL_MAIL_REPLY_TO_ADDRESS - the default reply-to email for all messages
  • MITOL_MAIL_MESSAGE_CLASSES - a list of fully qualified message class names that make the message classes available in the debugger
  • MITOL_MAIL_ENABLE_EMAIL_DEBUGGER - True if the email debugger should be enabled, you probably want to set this to the same value as DEBUG
  • MITOL_MAIL_RECIPIENT_OVERRIDE - only used locally, this overrides the recipient of all outgoing email messages
  • MITOL_MAIL_FORMAT_RECIPIENT_FUNC - (optional) set to a custom function to format recipients. You'll typically use this if you're storing the name in a place other that Django's builtin User model. Default: "mitol.mail.defaults.format_recipient".
  • MITOL_MAIL_CAN_EMAIL_USER_FUNC - (optional) set to a custom function to determine whether a user can be sent an email. You'll typically use this if you have additional criteria beyond the user having an email. Default: "mitol.mail.defaults.can_email_user".
  • MITOL_MAIL_CONNECTION_BACKEND - the connection backend to use for email sending. You'd use this only if you're doing something really custom that anymail doesn't give you. Default: "anymail.backends.mailgun.EmailBackend".

Usage

Create message classes

This involves subclassing mitol.mail.messages.TemplatedMessage. To subclass, do the following:

  • template_name attribute - str that denotes the directory within templates/mail that this message's templates reside in (e.g. "password_reset")
  • name attribute - a human-friendly name for your message (e.g. "Password Reset")
  • get_debug_template_context - static method that returns a context dict for rendering the email in the debugger

Define templates

In your apps's templates directory, create some templates:

templates/
  mail/
    {template_name}/
      subject.txt
      body.html

Configure settings.py

Add your custom message class to MITOL_MAIL_MESSAGE_CLASSES so it is available in the debugger.

Optional customizations

Optionally, you can also override:

  • get_base_template_context - extend the default base template context used with all emails of this type. Return type is a dict. As a best practice you should be merging with super().get_base_template_context().
  • get_default_headers - extend the default headers included with all emails of this type. Return type is a dict. As a best practice you should be merging with super().get_default_headers().

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mitol_django_mail-2026.4.29.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mitol_django_mail-2026.4.29-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file mitol_django_mail-2026.4.29.tar.gz.

File metadata

  • Download URL: mitol_django_mail-2026.4.29.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for mitol_django_mail-2026.4.29.tar.gz
Algorithm Hash digest
SHA256 9ba4f8dc32950c1796c5121d29346db3be8a205cf60e65af7203feec5e61994d
MD5 e908848fdcb8bf801bf93ddf4a96f745
BLAKE2b-256 9d93599cacd89feedbafb1996f61f762c26fc48a22107873ee24355d3af2dec6

See more details on using hashes here.

File details

Details for the file mitol_django_mail-2026.4.29-py3-none-any.whl.

File metadata

File hashes

Hashes for mitol_django_mail-2026.4.29-py3-none-any.whl
Algorithm Hash digest
SHA256 77e42ba048e59764cc2abd0b403515be8395a54afb5bf69a36c506bbee132406
MD5 c84633207398baa3da5f520e8d4768cc
BLAKE2b-256 383b6bd15115bdf0197ba38f7d4f2f21556a9cc1abf61eeab1fcdd8d26892005

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2026.4.29 This release

2 files

2026.4.2

2 files

2025.6.24

2 files

2025.6.23

2 files

2025.3.17

2 files

2024.11.5

2 files

2023.12.19

2 files

2023.1.17

2 files

3.3.0

2 files

3.2.1

2 files

3.2.0

2 files

3.1.0

2 files

3.0.1

2 files

3.0.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.0

2 files

1.0.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.6

2 files

0.1.4

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page