Python版的MJML - 一个使响应式邮件变得简单的框架
项目描述
mjml-python
这是 mjml v4 的非官方Python版本。它是用纯Python实现的,不需要JavaScript/NodeJS。mjml 是由 Mailjet 创建的标记语言,旨在减轻编写响应式邮件的痛苦。
安装
pip install mjml
用法
from mjml import mjml_to_html
with open('foo.mjml', 'rb') as mjml_fp:
result = mjml_to_html(mjml_fp)
assert not result.errors
html: str = result.html
或者您可以从CLI运行代码
$ mjml foo.mjml
局限性
这个库只实现了原始MJML项目的一个子集。它缺少JavaScript mjml实现中的一些功能(例如压缩、美化和验证)。此外,代码可能包含许多额外的错误。
优点是,当您改进代码时,有很多可能性让您真正做出贡献 :-)
目标/动机
这个库应该跟踪 mjml的JS版本,因此理想情况下您应该得到相同的HTML。然而,即使在最佳情况下,这个库也总是会落后一点,因为每个更改都必须手动翻译成Python(这是一个主要机械的过程)。
虽然我喜欢 mjml 的理念以及关于如何通过各种电子邮件客户端获取可接受 HTML 渲染的知识的所有知识,但我们不想在生产服务器上部署基于 Node.js 的堆栈。我们觉得审核所有 220 个由 npm install mjml
安装的 JS 包(以及每次新版本可用时重新做这些工作)并不舒服。此外,由于数据隐私方面的考虑,我们无法使用任何第三方产品(即 MJML 的 API 提供)。
在短暂地检查 Python 实现的可行性后,我继续编写了足够多的代码,以确保可以将一些现有消息转换为 mjml。目前,该库已部署在一些轻量级生产场景中。
使用 Python 的另一个好处是我们可以将其更紧密地集成到我们的 Web 应用中。由于 CPython 的启动开销远低于 Node.js,我们还可以通过 CLI 应用程序生成少量邮件而不会出现重大性能问题。CPython 使用 ~70ms 将一个简单的 mjml 模板转换为 HTML,而 Node.JS 需要 ~650ms。
文档
想法是实现与 JS 实现完全相同的 mjml XML方言,最终你应该能够使用官方文档和mjml.io上找到的其他在线资源。然而,我们现在还远远没有达到这个水平!当前的代码可以渲染“Hello World”示例以及图像、表格和组,但许多组件仍需重实现。我很乐意看到您的拉取请求以改善当前状态。
替代方案/其他资源
- django-mjml:如果您没有部署 NodeJS 的问题并且正在使用 Django,则可以使用成熟的django-mjml库。该库将 mjml JavaScript 实现与 Django 模板集成,因此您可以访问所有 mjml 功能。
- MJML.NET:这是 mjml 的非官方 C#(GitHub 仓库)移植,它支持的组件比此 Python 实现更多。
- mrml:mjml 的 rust 实现(GitHub 仓库)
- email-bugs 是一个 GitHub 项目,其中包含有关各种电子邮件客户端渲染怪癖的大量知识。
- htmlemailcheck 是一个用于帮助您在各种环境中检查电子邮件渲染的商业产品。我没有他们的服务的经验,但他们提供了一个免费的知识库。
- #emailgeeks - 电子邮件营销人员、设计师和开发者的 Slack 社区
项目详情
下载文件
下载适合您平台的项目。如果您不确定选择哪个,请了解更多关于安装包的信息。