跳转到主要内容

Django发送HTML电子邮件的实用工具。

项目描述

Django HTML Emailer

Django 1.7+发送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从一系列模板组成您的实际电子邮件。通常您有

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

首先将示例"通用设计"模板文件复制到您的项目模板路径中,按您喜欢的名称命名。从

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

然后是以下之一

如果您想使用单个Markdown文件,或者

如果您想明确设置消息的文本和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,则它应该是一个字典,其中包含传递到电子邮件模板中的默认模板上下文变量。

关于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

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发存档的教程。

构建分发

django_html_emailer-0.1.0-py2.py3-none-any.whl (12.3 kB 查看散列值)

上传时间 Python 2 Python 3

由以下支持