Skip to content
Preview mail in this panel for django debug toolbar.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/mail_panel Fixes #8 (#9) Sep 19, 2018
.gitignore Removes jquery dependence. DJDT 1.10+ compatible Sep 11, 2018
LICENSE Adding tests, moving things around Jan 9, 2016 Test build and name changes Jan 11, 2016 Some README cleanup. (#7) Sep 11, 2018
setup.cfg Adding tests, moving things around Jan 9, 2016 Merge branch 'master' of Oct 29, 2018 Test build and name changes Jan 11, 2016

Django Debug Toolbar - Mail Panel

Build Status

Testing and debugging e-mail while developing a Django app has never been pleasant. Sending e-mail to a file-based backend requires a user to click through obtusely-named files and does not provide a way to preview rendered HTML. Sending e-mail to a valid mailbox incurs a delay as the message is processed though a mail server, and clutters a developer's inbox.

The mail panel attempts to address these problems by providing a way to preview emails within the browser using django-debug-toolbar.

This mail panel is released under the Apache license. If you like it, please consider contributing!

Special thanks to @ShawnMilo for the code review.


To install the mail panel, first install this package with pip install django-mail-panel. Then add the mail_panel app after debug_toolbarto the INSTALLED_APPS setting:


and add the panel DEBUG_TOOLBAR_PANELS:


If you use the DEBUG_TOOLBAR_PANELS to custom order your panels:


Collect static and you'll be good to go.

./ collectstatic


After installation, you now need to redirect mail to the mail toolbar. Change your email backend to the following:

EMAIL_BACKEND = 'mail_panel.backend.MailToolbarBackend'

By default, mail toolbar stores messages for one day before removing them from cache. You can change this with the following setting:

MAIL_TOOLBAR_TTL = 86400  # 1 Day


To preview emails sent from your test suite, add the email backend override to your tests with the following:

from django.test.utils import override_settings

def test_send_email(self):
    # your code here

The backend works similarly to the standard email backend and code should not need to be reworked when using the MailToolbarBackend.

from django.core import mail

original_outbox = len(mail.outbox)
# Send mail ...
assert(len(mail.outbox) == original_outbox + 1)
You can’t perform that action at this time.