用于从django发送html电子邮件的实用程序。
django-html-emailer的Python项目详细描述
django html电子邮件程序
在django 1.7+中发送html电子邮件的实用程序:
- 使用HTML Email Boilerplate v0.5
- 使用pynliner内联css(按照样板说明)。
- 从标记或您提供的文本和HTML部分呈现消息正文。
安装
安装此模块:
pip install django-html-emailer
将htmlemailer
添加到Django设置的已安装应用程序中。
基本用法
下面是一个如何发送消息的快速示例:
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根据一系列模板合成您的实际电子邮件。通常有:
- 存储电子邮件实际内容的模板(一个标记模板或一对模板,一个用于HTML部分,另一个用于纯文本部分),它扩展了…
- 一个模板,具有所有电子邮件(css、页眉、页脚)的一般设计,类似于站点的
base.html
(一对模板,一个用于html,一个用于文本),它扩展了… - HTML电子邮件模板,我们已经将其转换为模板。
- 生成电子邮件主题行的
..._subject.txt
模板(它也是一个模板,可以在其中使用变量等)。
首先将示例“常规设计”模板文件复制到项目的模板路径中,并根据需要命名它们。从以下位置复制:
- htmlemailer/templates/htmlemailer/example_template.txt
- htmlemailer/templates/htmlemailer/example_template.html
然后将示例“实际内容”模板文件复制到项目中:
或者
如果要使用单个标记文件或
如果要分别显式设置邮件的文本和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
,那么它应该是一个字典,默认的模板上下文变量会传递到您的电子邮件模板中。
降价注意事项
使用commonmark(specification,library)将标记消息呈现为html。消息的文本部分使用特殊的标记到文本渲染器进行渲染,因为原始标记并不总是看起来很专业(尤其是链接和图像)。
在运行django模板引擎之前,首先呈现标记。因此,不能通过模板上下文变量将标记插入电子邮件。这是故意的。
还要注意,标记消息正文模板顶部的{% extends ... %}
标记不包含.txt
或.html
文件扩展名。在呈现为HTML和文本之前,库将为常规设计模板插入正确的文件扩展名。
注意:commonmark库被猴子修补以关闭e跳过url中的{和}(以允许模板标记出现在链接中)。如果在应用程序的其他地方使用commonmark,则如果在url中创建带有这些字符的标记文档(这可能是不好的)。
测试(库开发人员)
包括一个测试django项目。使用:
cd test_project
pip3 install pynliner commonmark commonmarkextensions
python3 manage.py test_html_email example
python3 manage.py test_html_email example2
这将向控制台输出测试电子邮件(mime消息)。example
使用单独的文本和html部分。example2
使用单个标记正文文件。
许可证
此项目和(上游)样板代码在麻省理工学院许可证下提供。
对于项目维护人员
要将通用控制盘发布到pypi,请执行以下操作:
pip3 install twine
rm -rf dist
python3 setup.py sdist bdist_wheel --universal
twine upload dist/*
git tag v1.0.XXX
git push --tags