用于管理本地化电子邮件模板的django应用程序。
django-appmail的Python项目详细描述
Django AppMail公司
用于管理事务性电子邮件模板的django应用程序
兼容性
这个项目现在需要django1.11+和python3。如果您需要python2支持,则必须参考python2分支。
背景
这个项目源于一个集成大型事务django的项目 应用曼德尔,并吸取教训它还欠一个小h/t 从2011年(https://github.com/hugorodgerbrown/AppMail)开始。
核心要求是提供一种简单的方式来添加/编辑电子邮件模板 对于Django项目,不需要开发人员 变化。在Django中使用模板电子邮件的最简单方法是依赖 内置模板结构,但这意味着模板保存在 文件,在版本控制下,这使得非开发人员很难 编辑。
这是一个not所见即所得的HTML编辑器,它没有任何聪明的功能。它 不处理电子邮件的发送-它只是提供了一个方便 存储和呈现电子邮件内容的机制。
fromappmail.modelsimportEmailTemplatedefsend_order_confirmation(order_id):order=Orders.objects.get(id=order_id)template=EmailTemplate.objects.current('order_confirmation')context={"order":order}# create_message accepts EmailMultiAlternatives constructor kwargs# and returns a standard Django email object which can be updated / sent.message=template.create_message(context,to=[order.recipient.email])message.send()
核心要求是:
- 编辑主题行、纯文本和HTML内容
- 使用标准django模板语法
- 支持基本模板
- 模板版本控制
- 语言支持
- 发送测试电子邮件
模板属性
单个模板作为模型对象存储在数据库中这个 标准Django管理站点用于查看/筛选模板模板 按名称、语言和版本排序。这种组合是独一无二的。这个 语言和版本属性具有合理的默认值( version=settings.language\u code和version=0)因此如果您 不需要它在不同的 语言和版本-它们作为独立对象存储
# get the default order_summary email (language = settings.LANGUAGE_CODE)template=EmailTemplate.objects.current('order_summary')# get the french versiontemplate=EmailTemplate.objects.current('order_summary',language='fr')# get a specific versiontemplate=EmailTemplate.objects.version('order_summary',1)
模板语法
模板本身使用标准的django模板语法,包括 标签、过滤器的使用。他们没有什么特别的,但是 是一个警告-模板继承。
模板继承
尽管模板内容没有存储在磁盘上,但是没有重新设计 模板呈现方法任何父模板都必须是真烦人, 但这背后有一个合理的假设-如果你正在改变你的基础 模板您可能已经涉及到设计师和开发人员,所以 必须依赖开发人员来进行更改是可以接受的
发送测试电子邮件
您可以通过管理列表视图将测试电子邮件发送到电子邮件地址。
自定义管理操作“发送测试电子邮件”将重定向到中间 输入收件人电子邮件地址并发送电子邮件的页面:
在各个模板管理页面上也有一个链接(右上角,历史链接旁边):
测试
应用程序有一个测试套件,最好通过tox运行。
许可证
麻省理工学院
贡献
一般规则适用:
- 转到您自己的帐户
- 创建分支,解决问题/添加功能
- 提交PR
请注意遵循编码风格-和PEP8。
释放
如果您发现自己不得不发布一个新版本,并且假设您已经拥有必要的PyPi权限,那么下面是您需要采取的步骤:
- 1。用bumped版本更新“setup.py”。将其推至“主控”
- 向后兼容修补程序的修补程序版本
- 向后C的次要版本可比特征
- 不兼容功能的主要版本
- 2通过运行以下命令标记此新版本
- git标签-v1.0.x-m v.1.0.x
- git push–标签
现在,如果您转到github并查看标记,您应该能够在其中看到您的版本
- 3。制造车轮
- python3 setup.py sdist bdist_wheel
- 4。使用绳线将其上传到PyPi上
- 捆绳上传距离/*
- 将要求您提供您的pypi用户名和密码