GOV.UK Notify风味的Django电子邮件后端
项目描述
django-gov-notify,一个GOV.UK Notify风味的Django电子邮件后端
django-gov-notify提供了与GOV.UK Notify服务的Django集成,用于发送电子邮件和短信消息。Python客户端文档。
这是作为一个自定义Django电子邮件后端实现的。它提供了类似于标准Django电子邮件后端的内部API,但有一些限制
- GOV.UK Notify电子邮件每次只发送给一个收件人。CC:和BCC:字段不受支持。
- 带有多个收件人的单个电子邮件“消息”将导致对GOV.UK Notify的多个单独API调用,每个消息都发送给单个收件人。后端仍然会报告回
1
,如Django的默认行为。 - 附件(目前)不受支持。
- 自定义头不受支持。
- 要配置“回复到”地址,您必须首先在GOV.UK Notify管理界面中配置此类地址。
- “来自”地址字段不受支持。这必须在GOV.UK Notify管理界面中配置。
- 预格式化电子邮件应配置为服务管理仪表板中的Markdown模板和占位符。
- 邮件正文被解释为非常有限的Markdown。在测试中,变量似乎没有被解释为Markdown,或者可能被破坏,例如
_test_
在邮件中发送为*test*
。
兼容性
django-gov-notify支持
- Python 3.8, 3.9, 3.10和3.11
- Django 3.2, 4.1和4.2
安装
使用pip
$ pip install django-gov-notify
使用Poetry
$ poetry add django-gov-notify
配置
在您的Django项目设置中
EMAIL_BACKEND = "django_gov_notify.backends.NotifyEmailBackend"
您至少需要一个邮箱模板ID,带有一个纯模板
主题:((主题))
正文:((正文))
设置Django设置
GOVUK_NOTIFY_API_KEY
(注意:不是GOV_UK…)GOVUK_NOTIFY_PLAIN_EMAIL_TEMPLATE_ID
这个纯模板ID设置,以及传递给NotifyEmailMessage类的模板ID,使用UUID键的字符串表示形式。
使用方法
使用模板发送邮件
在GOV.UK Notify仪表板中配置模板
主题:关于((主题))的消息
正文:您好((名字)),您的参考编号为((编号))
创建一个电子邮件消息,提供模板ID和一个个性化
字典(这还应该包括在模板主题中定义的任何变量)
from django_gov_notify.message import NotifyEmailMessage
message = NotifyEmailMessage(
to=["recipient@example.com"],
template_id="43573f75-80e7-402f-b308-e5f1066fbd6f",
personalisation={
"topic": "The Prisoner",
"first name": "Patrick",
"ref number": "6",
},
)
message.send()
注意,在这种情况下,主题和正文不是必需的,也不允许,因为个性化字典不知道如何使用它们。
使用默认(空白)模板发送邮件
这假设您已配置了一个带有参数的空白模板
主题:((主题))
正文:((正文))
from django_gov_notify.message import NotifyEmailMessage
message = NotifyEmailMessage(
subject="Test subject", body="Test message content", to=["recipient@example.com"]
)
message.send()
注意,在这种情况下,主题和正文是必需的,并且您不得传递template_id
或personalisation
关键字参数。
使用send_mail
快捷函数发送邮件
像平常一样使用它,包括将被丢弃的'from'地址
from django.utils.mail import send_mail
send_mail("Subject", "Message content", "from@example.com", ["recipient@example.com"])
这将使用配置为settings.GOVUK_NOTIFY_PLAIN_EMAIL_TEMPLATE_ID
的空白模板ID。不支持附件、自定义头和密送收件人。
贡献
要本地工作在此存储库上
- 安装:
poetry install
- 运行测试:
poetry run python runtests.py