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
Close
Hashes for mitol-django-mail-2023.12.19.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 824f6ff0a7fb7b996962e608c61e5d02d06c174e466d00896eb43fdac864148f |
|
MD5 | d3be06f1d2d3dca2b1d89646dece9dd8 |
|
BLAKE2b-256 | 22c5a67c455de7c1c980c422f30056be3e759347c2682d5b774628976d8c5a52 |
Close
Hashes for mitol_django_mail-2023.12.19-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a32853bfe7da39d4c34651d7e5bddc547678c1b5b3a54e56e492879276eab371 |
|
MD5 | cac4d7d98c1979e94f5404c46453f80d |
|
BLAKE2b-256 | 5e4527afcb7a712c72cc3f4bbadfd696fe03c747d9fc35582b610cd0fa25b07f |