【发布时间】:2020-10-28 06:18:04
【问题描述】:
我正在后端编译车把模板以作为 HTML 电子邮件发送。我的一些消息需要包含服务器生成的 SVG - QRCode。
我使用现有库 - qrcode-svg 制作了一个简单的 Handlebars 助手。代码如下:
Handlebars.registerHelper('qrcode', (data) => {
const svg = new QRCode({
content: data,
width: 90,
height: 90,
xmlDeclaration: false,
join: true
}).svg();
return svg;
});
我正在使用的库独立运行良好。我的模板有一个片段,如:
{{#each tickets}}
<div style="...">
<div style="...">
{{{qrcode payload}}}
</div>
<div>{{title}}</div>
<div>{{sequence}}</div>
</div>
{{/each}}
如果我使用 no-escape {{{...}}} 版本或在 Handlebars 选项中将 noEspace 设置为 true,我会在我的 HTML 电子邮件中收到一堆 <u></u>。
如果我正常使用{{qrcode payload}},我会做一个svg,只有"<svg.../>",例如我的 svg 被双引号包围,并且电子邮件无法正确呈现。我看到的不是 SVG,而是代表它的 HTML 代码。
我该怎么办?
【问题讨论】:
-
the email does not render correctly你在哪里看渲染的 HTML? -
gmail。它强制嵌入样式,但 SVG 应该仍然可以工作,对吧?
-
caniemail.com/features/html-svg。传统上,对 SVG 的电子邮件支持从未如此出色。
标签: javascript svg handlebars.js html-email