用于从django发送html电子邮件的实用程序。

django-html-emailer的Python项目详细描述


django html电子邮件程序

在django 1.7+中发送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根据一系列模板合成您的实际电子邮件。通常有:

  1. 存储电子邮件实际内容的模板(一个标记模板或一对模板,一个用于HTML部分,另一个用于纯文本部分),它扩展了…
  2. 一个模板,具有所有电子邮件(css、页眉、页脚)的一般设计,类似于站点的base.html(一对模板,一个用于html,一个用于文本),它扩展了…
  3. HTML电子邮件模板,我们已经将其转换为模板。
  4. 生成电子邮件主题行的..._subject.txt模板(它也是一个模板,可以在其中使用变量等)。

首先将示例“常规设计”模板文件复制到项目的模板路径中,并根据需要命名它们。从以下位置复制:

然后将示例“实际内容”模板文件复制到项目中:

或者

如果要使用单个标记文件或

如果要分别显式设置邮件的文本和HTML部分。

您可以更改路径和文件名,但文件集必须具有相同的路径名,最多为.md.txt.html_subject.txt。这就是模块知道它们一起使用的方式(注意,在调用send_mail时不包括文件扩展名)。

如果更改了常规设计模板的路径,则必须更新example.mdexample.txtexample.html中的{% extends ... %}模板标记才能指向新路径。当然,您可以通过在不同路径创建一组新的.md.txt.html_subject.txt文件来拥有多封电子邮件。

最后,在调用send_mail时,更新第一个参数以指定电子邮件模板的位置。只需指定三个文件路径名的公共部分。在这种情况下,它只是htmlemailer/example。库将添加.md.txt.html_subject.txt

高级用法

send_mail还接受一个可选的fail_silently布尔参数(默认值为false),它将其他关键字参数传递给django的EmailMessage构造函数,因此您还可以传递headersconnection

如果在您的设置中设置了DEFAULT_TEMPLATE_CONTEXT,那么它应该是一个字典,默认的模板上下文变量会传递到您的电子邮件模板中。

降价注意事项

使用commonmark(specificationlibrary)将标记消息呈现为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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用唯一的按钮标签单击按钮   代码生成如何使用Java codeModel为数组的特定索引赋值   java如何批量执行Camel SQL插入   java iText 7将ltv添加到现有签名   内存管理Java应用程序突然停止几天后(810)   带MySQL的java注册表单JavaFX在intellij中失败   如何使用eclipse为windows azure java项目启用远程调试   一种通用的java输入输出设计模式   java Android XML(RSS)忽略引号(“”)   java帮助:安卓中的8 X 10 2维按钮数组   java启动Android项目   JWrapper构建java应用程序   java如何在Android应用程序中设置基于日期/时间的默认页面加载?   java循环程序在完成后返回到起点   java Hibernate:更好的整体类还是多类映射?   回溯数独解算器的递归问题[Java]   java查找类用法   java如何在SpringWebFlow中将多个模型绑定到一个视图?