Templates for Flask-Mailman
- Define your emails as templates
- Optionnaly use a yaml frontmatter to define metadata like subject
- Support for markdown emails
- Support for MJML
- Inline css using premailer
- Optionnaly auto generate text alternative from html emails (if html2text is installed)
pip install flask-mailman-templates
Initialize Flask-Mailman first then Flask-Mailman-Templates:
from flask import Flask
from flask_mailman import Mail
from flask_mailman_templates import MailTemplates
app = Flask(__name__)
mail = Mail(app)
mail_templates = MailTemplates(app)
Create templates in an email folder. Example email/hello.txt
:
---
subject: Hello world
---
Hello from Flask!
Send your email using either TemplatedEmailMessage
or send_mail()
:
from flask_mailman_templates import TemplatedEmailMessage, send_mail
msg = TemplatedEmailMessage("hello.txt", "[email protected]")
msg.send()
# or
send_mail("hello.txt", "[email protected]")
The frontmatter is optionnal and options can be passed as keyword arguments (keyword args override the frontmatter if both are used)
send_mail("hello.txt", "[email protected]", subject="hello world")
Format | File extension | Required dependency | Description |
---|---|---|---|
txt | txt | Text email only | |
HTML | html | HTML email only | |
Markdown | md | markdown | Text + HTML email |
MJML | mjml | mjml | HTML email only |
If html2text is installed, HTML emails will be automatically converted to text and both content types will be attached (does not apply to markdown).
Config key | Extension argument | Description | Default |
---|---|---|---|
MAIL_TEMPLATES_FOLDER | template_folder | Location of email templates | emails |
MAIL_TEMPLATES_MARKDOWN_OPTIONS | markdown_options | Options for the markdown function | {} |
MAIL_TEMPLATES_INLINE_CSS | inline_css | Whether to inline css with premailer if installed | True |
MAIL_TEMPLATES_AUTO_TEXT_BODY_FROM_HTML | auto_text_body_from_html | Whether to convert HTML content to text content if html2text is installed | True |