MIT Open Learning django app extensions for mail
Project description
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 messagesMITOL_MAIL_REPLY_TO_ADDRESS
- the default reply-to email for all messagesMITOL_MAIL_MESSAGE_CLASSES
- a list of fully qualified message class names that make the message classes available in the debuggerMITOL_MAIL_ENABLE_EMAIL_DEBUGGER
-True
if the email debugger should be enabled, you probably want to set this to the same value asDEBUG
MITOL_MAIL_RECIPIENT_OVERRIDE
- only used locally, this overrides the recipient of all outgoing email messagesMITOL_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 builtinUser
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 thatanymail
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 withintemplates/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 adict
. As a best practice you should be merging withsuper().get_base_template_context()
.get_default_headers
- extend the default headers included with all emails of this type. Return type is adict
. As a best practice you should be merging withsuper().get_default_headers()
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mitol-django-mail-2023.12.19.tar.gz
.
File metadata
- Download URL: mitol-django-mail-2023.12.19.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 824f6ff0a7fb7b996962e608c61e5d02d06c174e466d00896eb43fdac864148f |
|
MD5 | d3be06f1d2d3dca2b1d89646dece9dd8 |
|
BLAKE2b-256 | 22c5a67c455de7c1c980c422f30056be3e759347c2682d5b774628976d8c5a52 |
File details
Details for the file mitol_django_mail-2023.12.19-py3-none-any.whl
.
File metadata
- Download URL: mitol_django_mail-2023.12.19-py3-none-any.whl
- Upload date:
- Size: 19.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a32853bfe7da39d4c34651d7e5bddc547678c1b5b3a54e56e492879276eab371 |
|
MD5 | cac4d7d98c1979e94f5404c46453f80d |
|
BLAKE2b-256 | 5e4527afcb7a712c72cc3f4bbadfd696fe03c747d9fc35582b610cd0fa25b07f |