我在一个集合中有一个字段will
,用户可以在其中保存html文本(通过WYSIWYG编辑器):它工作正常,用户可以编写/保存一些像这样的字符串it's<strong>bold</strong> and sometimes <i>italic</i>.
没有什么疯狂的..
当用户通过电子邮件(作为will
的一部分)通过html模板中的emailData
呈现此字段meteorhacks:ssr
时,该字段显示为it's<strong>bold</strong> and sometimes <i>italic</i>.
, HTML标记为普通文本。
所以,任何人都知道在html电子邮件正文中呈现的技巧:'它是粗体,有时斜体。'?感谢。
我的代码非常复杂,很多const
和一系列函数,但除了html渲染之外,它工作正常,最终结构如下:
SSR.compileTemplate('htmlEmail', Assets.getText('replycontact.html'));
var emailData = {
message: `${message}`,
will: `${will}`,
origincontactdate: `${origincontactdate}`,
contactname: `${contactname}`,
};
//send the mail
Email.send({
to: to,
from: from,
subject: subject,
html: SSR.render('htmlEmail', emailData),
});
答案 0 :(得分:1)
问题在于Meteor正在逃避HTML字符串。
因此,解决方案是使用3个括号{{{ }}}
而不是2 - 此处为html模板中的emailData
:而不是{{will}}
,请使用{{{will}}}
。< / p>
问题中的上述代码保持不变。
答案 1 :(得分:0)
您的数据很可能被保存为数据库中的HTML编码,例如
<b>
保存为
<b>
如果是这样,你只需要使用Javascript decodeURI()函数取消编码,你可以在这里阅读更多信息:
http://www.w3schools.com/jsref/jsref_decodeuri.asp
所以你的代码看起来像这样:
var emailData = {
message: `${message}`,
will: decodeURI(${will}),
origincontactdate: `${origincontactdate}`,
contactname: `${contactname}`,
};
//send the mail
Email.send({
to: to,
from: from,
subject: subject,
html: SSR.render('htmlEmail', emailData),
});