用于从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迭代图形框架聚合达到内存限制的消息   反编译和开发人员向Android应用程序提供java安全密钥   活页夹中的java Vaadin上传组件,例如Crud编辑器   java如何定义0090当我有了每个字符   带有AOP的java截取私有注释方法   在Java中暂停并恢复动画(thread.sleep)   java在JavaFX中从不同的控制器向TableView添加行   java如何通过Spring使用脚本初始化inmemory HSQLDB   windows找到了绝对的java。通过编程从java代码获取exe路径   Java同步、信号量和队列的多线程性能   java异步任务回调未调用   java在迷宫中用坐标寻找最短路径   Java:并行处理数组,查找发生异常的位置   java我无法理解我收到的错误   如何调用。bat文件,并使用java中的ProcessBuilder发送字符串   java在mysql数据库中插入日期   将ArrayList的内容显示为格式正确的JSON for Java REST API   java@OneToMany注释SQLSyntaxErrorException:ORA000904无效标识符