Opened 14 years ago
Last modified 16 months ago
#17193 new New feature
Send templated email. — at Initial Version
| Reported by: | Tom Christie | Owned by: | nobody |
|---|---|---|---|
| Component: | Core (Mail) | Version: | |
| Severity: | Normal | Keywords: | |
| Cc: | Chris Streeter, artem.rizhov@…, chuck-norris@…, cmawebsite@… | Triage Stage: | Accepted |
| Has patch: | yes | Needs documentation: | yes |
| Needs tests: | yes | Patch needs improvement: | yes |
| Easy pickings: | no | UI/UX: | no |
Description
If your sending email it's likely that you want to render the body text from template, but there's currently no shortcut to send an email based on a template.
The attached patch is based on a stripped down version of https://github.com/bradwhittington/django-templated-email
It adds django.shortcuts.send_templated_mail, which mirrors the existing send_mail, but which renders the subject and body of the mail from a template, rather than taking their values explicitly. It also supports multipart html/plaintext emails.
The docs will look something like this...
send_templated_mail(template_name, from_email, recipient_list, dictionary=None, context_instance=None, fail_silently=False, auth_user=None, auth_password=None, connection=None):
Sends a mail, rendering the subject and body of the email from a template.
The template should contain a block named 'subject', and either/both of a 'plain' and/or 'html' block.
If only the 'plain' block exists, a plaintext email will be sent.
If only the 'html' block exists, the plaintext component will be automatically generated from the html, and a multipart email will be sent.
If both the 'plain' and 'html' blocks exist, a multipart email will be sent.
Required arguments:
template_name- The template that should be used to render the email.
from_email- The sender's email address.
recipient_list- A list of reciepient's email addresses.
Optional arguments:
dictionary- The context dictionary used to render the template. By default, this is an empty dictionary.
context_instance- The Context instance used to render the template. By default, the template will be rendered with a Context instance (filled with values from dictionary).
fail_silently- As insend_mail.
auth_user- As insend_mail.
auth_password- As insend_mail.
connection- As insend_mail.