用于管理本地化电子邮件模板的django应用程序。

django-appmail的Python项目详细描述


https://travis-ci.org/yunojuno/django-appmail.svg?branch=masterhttps://badge.fury.io/py/django-appmail.svg

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()

核心要求是:

    列表/预览现有模板
  1. 编辑主题行、纯文本和HTML内容
  2. 使用标准django模板语法
  3. 支持基本模板
  4. 模板版本控制
  5. 语言支持
  6. 发送测试电子邮件

模板属性

单个模板作为模型对象存储在数据库中这个 标准Django管理站点用于查看/筛选模板模板 按名称、语言和版本排序。这种组合是独一无二的。这个 语言和版本属性具有合理的默认值( version=settings.language\u codeversion=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模板语法,包括 标签、过滤器的使用。他们没有什么特别的,但是 是一个警告-模板继承。

模板继承

尽管模板内容没有存储在磁盘上,但是没有重新设计 模板呈现方法任何父模板都必须是真烦人, 但这背后有一个合理的假设-如果你正在改变你的基础 模板您可能已经涉及到设计师和开发人员,所以 必须依赖开发人员来进行更改是可以接受的

发送测试电子邮件

您可以通过管理列表视图将测试电子邮件发送到电子邮件地址。

EmailTemplate admin change form

自定义管理操作“发送测试电子邮件”将重定向到中间 输入收件人电子邮件地址并发送电子邮件的页面:

screenshots/appmail-test-email-send.png

在各个模板管理页面上也有一个链接(右上角,历史链接旁边):

EmailTemplate admin change form

测试

应用程序有一个测试套件,最好通过tox运行。

许可证

麻省理工学院

贡献

一般规则适用:

  1. 转到您自己的帐户
  2. 创建分支,解决问题/添加功能
  3. 提交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用户名和密码

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaSpringMVC控制器测试打印结果JSON字符串   若catch语句返回,那个么为什么它最终会阻塞呢?   java Grails中servletContext在哪里可用?   java Jhipster:如何为现有项目启用多种语言   java异常评估SpringEL表达式:“#fields.hasErrors('something')”   java如何验证SeleniumWebDriver中的文本颜色?   java在绘图时使用JPanel坐标   java如何初始化spring启动到project?   java如何通过JDBC的PreparedStatement将UUID数组插入HyperSQL数据库   java修改JVM以跨线程序列化文件访问   Javascript到Java正则表达式   使用Java运行时调用aspell程序时出现字符集问题。getRuntime()。执行官   执行RDP时的java Sukuli按钮识别   java如何使用okhttp更改connect请求的标头   java无法创建Maven Eclipse项目