我正在将一些遗留电子邮件模板转换为mjml (使用mjmlVersion4.2)。我使用Azure函数(NodeJs)使用工具栏动态地向模板添加内容,并返回最终的html email,这非常有效。我已经将模板的部分分割成不同的文件(页眉、页脚、介绍等)。我已经用mj-include把它们包括进来了。
目前这就是我要做的。
mjml2html以获得呈现的模板
htmlTemplateObject = mjml2html(mjmlData,{filePath: filePath});在使用工具栏动态注入数据之前,我必须先运行mjml2html,否则工具栏将不会在mj-include中包含的文件中选择内容。因此,如果我在动态内容中有一个p标记,那么样式就不会内联,因为在运行handlebars之前,我已经将mjml模板转换成了html。
是否有一种方法可以在运行mjml之前将完整的mjml2html (包括使用mj-include的文件中的内容)呈现为字符串
任何像mjml2string这样的帮助都会使它成为一个完美的解决方案。
发布于 2018-10-26 09:11:35
我查看了mjml github存储库,以了解它是如何工作的,因为MJML CLI需要在将其转换为html之前以某种方式组合mj-include元素中的文件。我找到了包含文件的代码,并在MJML中生成了mjml-core/lib/includeExternal文档。
我所要做的就是导入它并将它用作
let mjmlTemplate = mjmlInclude(mjmlBaseTemplate, {filePath: mjmlBaseTemplateFilePath})然后运行工具栏将动态内容注入模板,最后运行mjml2html(mjmlTemplate)以获得最终的html文件。这样做可以将我在mj-style中的样式注入动态内容中的html标记。
发布于 2021-07-05 21:17:02
我不认为答案是我的,但它是对上述问题的更新。我在MJML团队的MJML Slack上看到了这种情况。适用于MJML 4.10.1的源代码。
嗨!您可以使用mjml解析器,就像我们在mjml-core中使用https://github.com/mjmlio/mjml/blob/master/packages/mjml-core/src/index.js#L128-L135一样,并将json转换回xml (我们也有一个内部助手,用于此https://github.com/mjmlio/mjml/blob/master/packages/mjml-core/src/helpers/jsonToXML.js )。 不要忘记首先需要完整的mjml包来加载每个标准组件。
https://stackoverflow.com/questions/52973121
复制相似问题