基于Markdown的Django HTML和文本邮件模板。
项目描述
Django eMark↓
基于Markdown的Django HTML和文本邮件模板。
- 简单的 Markdown 邮件模板
- 支持 HTML 和文本邮件
- 国际化支持
- 内置 UTM 追踪
- 内置发送、打开和点击追踪
- 通过 premailer 自动内联 CSS
设置
python3 -m pip install emark
# settings.py
INSTALLED_APPS = [
'emark',
# ...
]
python3 manage.py migrate
使用方法
<!-- myapp/my_message.md -->
# Hello World
Hi {{ user.short_name }}!
# myapp/emails.py
from emark.message import MarkdownEmail
class MyMessage(MarkdownEmail):
subject = "Hello World"
template_name = "myapp/my_message.md"
# myapp/views.py
from . import emails
def my_view(request):
message = emails.MyMessage.to_user(request.user)
message.send()
模板
您可以使用 Django 的模板引擎,就像您通常所做的那样。您可以使用翻译、模板标签、过滤器、块等。
您还可以有一个基本模板,您可以在您的单个电子邮件中继承它,以提供一致的问候语和结束语。
<!-- base.md -->
{% load static i18n %}
{% block salutation %}Hi {{ user.short_name }}!{% endblock %}
{% block content %}{% endblock %}
{% block farewell %}
{% blocktrans trimmed %}
Best regards,
{{ site_admin }}
{% endblocktrans %}
{% endblock %}
{% block footer %}
Legal footer.
{% endblock %}
<!-- myapp/email.md -->
{% extends "base.md" %}
{% block content %}
This is the content of the email.
{% endblock %}
上下文
上下文作为字典传递给模板。此外,您可以重写 get_context_data
方法以添加额外的上下文变量。
# myapp/emails.py
from emark.message import MarkdownEmail
class MyMessage(MarkdownEmail):
subject = "Hello World"
template_name = "myapp/email.md"
def get_context_data(self):
context = super().get_context_data()
context["my_variable"] = "Hello World"
return context
追踪
发送、打开 & 点击追踪
Django eMark 内置发送、打开和点击事件的追踪。追踪是通过追踪像素和重定向视图完成的。
作为额外的好处,此功能还包括一个打开在浏览器中的链接,允许用户在其不支持 HTML 邮件的电子邮件客户端中查看电子邮件。
默认情况下,此功能是禁用的。要启用它,您需要使用单独的电子邮件后端。此后端将通过 SMTP 发送电子邮件,并添加追踪像素和重定向视图。但是,它将为每个收件人发送单独的电子邮件,这可能在所有情况下都不是所希望的。
# settings.py
EMAIL_BACKEND = "emark.backends.TrackingSMTPEmailBackend"
此外,您需要将追踪视图添加到您的 urls.py
# urls.py
from django.urls import include, path
urlpatterns = [
# … other urls
path("emark/", include("emark.urls")),
]
您需要为追踪像素和重定向视图提供一个域名。这可以通过 DOMAIN
设置来完成
# settings.py
EMARK = {
"DOMAIN": "example.com"
}
如果已安装站点框架且未提供设置,则域名将自动设置为当前站点的域名。
追踪数据存储在数据库中。您需要运行迁移来创建必要的表
python3 manage.py migrate
您可以通过 emark_sent
、emark_open
和 emark_click
表来分析追踪数据。
UTM 追踪
每个 MarkdownEmail
子类都包含自动 UTM 追踪。UTM 参数添加到电子邮件中的所有链接。已显式设置的链接上的现有 UTM 参数不会被覆盖。默认参数如下
utm_source
:website
utm_medium
:email
utm_campaign
:{{ EMAIL_CLASS_NAME }}
全局 UTM 参数可以通过 EMARK_UTM_PARAMS
设置进行覆盖,它是一个参数字典
# settings.py
EMARK = {
"UTM_PARAMS": {
"utm_source": "website", # default
"utm_medium": "email", # default
}
}
您还可以通过重写 get_utm_params
或将 utm_params
字典传递给类构造函数来更改 UTM 参数。
# myapp/emails.py
from emark.message import MarkdownEmail
class MyMessage(MarkdownEmail):
subject = "Hello World"
template_name = "myapp/email.md"
# override the parameters for this email class
def get_utm_params(self):
return {
"utm_source": "myapp",
"utm_medium": "email",
"utm_campaign": "my-campaign",
}
# or alternatively during instantiation
MyMessage(utm_params={"utm_campaign": "my-other-campaign"}).send()
开发
漂亮的 HTML 邮件很棒,除非它们在开发期间使您的控制台变得混乱。为了防止这种情况,您可以使用 ConsoleEmailBackend
# settings.py
EMAIL_BACKEND = "emark.backends.ConsoleEmailBackend"
ConsoleEmailBackend
将只打印电子邮件的纯文本版本。
电子邮件仪表板
Django eMark 内置了一个简单的电子邮件仪表板,用于预览您的模板。
要启用仪表板,将应用程序添加到您的 INSTALLED_APPS
设置
# settings.py
INSTALLED_APPS = [
# ...
"emark",
"emark.contrib.dashboard", # needs to be added before Django's admin app
# ...
"django.contrib.admin", # required for the dashboard
# ...
]
并将以下内容添加到您的 urls.py
# urls.py
from django.urls import include, path
urlpatterns = [
# … other urls
path("emark/", include([
path("", include("emark.urls")),
path("dashboard/", include("emark.contrib.dashboard.urls")),
])),
]
接下来,您需要注册仪表板中要预览的电子邮件类
# myapp/emails.py
from emark.message import MarkdownEmail
from emark.contrib import dashboard
@dashboard.register
class MyMessage(MarkdownEmail):
subject = "Hello World"
template_name = "myapp/email.md"
致谢
- Django eMark 使用了 Responsive HTML Email Template 的修改版作为基本模板
- 对于 CSS 内联,Django eMark 使用 premailer
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
emark-2.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7c534f34b02b8336528cc8ac6f6b42ea1fdcb755bb91740027727b1e4f0c7aaf |
|
MD5 | 3d335ea96222dc6a5a7b615ae2ea01fb |
|
BLAKE2b-256 | 91634530bbf90e4872d4cc9c69bdc9142b7dd9eb525fdd36d85dc01d71a22f14 |
emark-2.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 304b5c47f1205af60648bf834e711787d29faa936fd753a8ab25976f93970ffb |
|
MD5 | e59a7de2c5536c0da46966c3e3367b7a |
|
BLAKE2b-256 | e11c94ba09f934d2f40dda6cd4ac74fb736cd710c48c4a34491dc88fec22e84a |