Django发送HTML电子邮件的实用工具。
项目描述
Django HTML Emailer
Django 1.7+发送HTML电子邮件的实用程序。
- 使用HTML Email Boilerplate v0.5
- 使用inlinestyler根据模板说明内联CSS。
- 从Markdown或您提供的文本和HTML部分渲染消息正文。
安装
安装此模块
pip install django-html-emailer
将htmlemailer
添加到Django设置中的INSTALLED_APPS。
基本用法
以下是如何发送消息的快速示例
from htmlemailer import send_mail
send_mail(
"htmlemailer/example",
"My Site <mysite@example.org>",
["you@recipient.com"],
{
"my_message": "Hello & good day to you!"
})
将收件人地址替换为您自己的电子邮件地址。这将使用示例模板发送消息给您。
您的模板
htmlemailer从一系列模板组成您的实际电子邮件。通常您有
- 存储电子邮件实际内容的模板(Markdown模板或一对模板,一个用于HTML部分,一个用于纯文本部分),它扩展...
- 具有您所有电子邮件的一般设计的模板(CSS、标题、页脚),类似于您网站的
base.html
(一对模板,一个用于HTML,一个用于文本),它扩展... - 我们已将其转换为模板的HTML电子邮件模板。
- 一个
..._subject.txt
模板,它生成电子邮件的主题行(它也是一个模板,您可以在其中使用变量等)。
首先将示例"通用设计"模板文件复制到您的项目模板路径中,按您喜欢的名称命名。从
- htmlemailer/templates/htmlemailer/example_template.txt
- htmlemailer/模板/htmlemailer/example_template.html
然后将示例“实际内容”模板文件复制到您的项目中
然后是以下之一
如果您想使用单个Markdown文件,或者
如果您想明确设置消息的文本和HTML部分。
您可以更改路径和文件名,但必须确保文件集具有相同的路径名,直到.md
、.txt
、.html
和_subject.txt
。模块就是这样知道它们是一起的(注意在send_mail
调用中您没有包含文件扩展名)。
如果您更改了通用设计模板的路径,您必须更新example.md
或example.txt
和example.html
中的{% extends ... %}
模板标签,以便指向新路径。您当然可以创建多个电子邮件,方法是创建不同路径的新.md
、.txt
、.html
和_subject.txt
文件集。
最后,在您的send_mail
调用中,更新第一个参数以指定电子邮件模板的位置。只需指定三个文件路径名的公共部分。在这种情况下,只是htmlemailer/example
。库将添加.md
、.txt
、.html
和_subject.txt
。
高级用法
send_mail
还接受一个可选的布尔参数fail_silently
(默认为False),并将其他关键字参数传递给Django的EmailMessage构造函数,因此您也可以传递headers
和connection
。
如果您的设置中设置了DEFAULT_TEMPLATE_CONTEXT
,则它应该是一个字典,其中包含传递到电子邮件模板中的默认模板上下文变量。
关于Markdown的说明
Markdown消息使用CommonMark(规范、库)渲染为HTML。消息的文本部分使用特殊的Markdown-to-text渲染器进行渲染,因为原始Markdown不总是看起来很专业(特别是链接和图像)。
Markdown在运行Django模板引擎之前先渲染,因此您无法通过模板上下文变量将Markdown插入电子邮件中。这是设计上的。
请注意,Markdown消息正文模板顶部的{% extends ... %}
标签不包含.txt
或.html
文件扩展名。在将通用设计模板渲染为HTML和文本之前,库将插入正确的文件扩展名。
注意:CommonMark库被猴子修补以关闭URL中{'s和}'s的转义(以允许模板标签出现在链接中)。如果您在应用程序的其他地方使用CommonMark,那么如果您在URL中创建包含这些字符的Markdown文档,可能会影响您(这可能是糟糕的)。
测试(库开发者)
包括一个测试Django项目。要使用
cd test_project
pip3 install inlinestyler commonmark commonmarkextensions
python3 manage.py test_html_email example
python3 manage.py test_html_email example2
This will output test emails (a MIME message) to the console. example
uses separate text and HTML parts. example2
uses a single Markdown body file.
许可证
此项目和(上游)模板代码可在MIT许可证下获得。
对于项目维护者
要发布到pypi的通用轮,请更新setup.py中的版本号,然后
pip3 install twine
rm -rf dist
python3 setup.py bdist_wheel --universal
twine upload dist/*
git tag v1.0.XXX
git push --tags
项目详情
散列值 for django_html_emailer-0.1.0-py2.py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 1c0db5026d59ebecb3b24504b849830b379302f667d29c02d8ced8ad82920ffd |
|
MD5 | 39e4607aed060c5125fa6ae2b8d3cf71 |
|
BLAKE2b-256 | 9f259cb0d273496d6c04f6274551cc172847604f4296bc7971b18e111f2b9acd |