所以我有index.ejs,它在我启动nodejs服务器时呈现完美:
<!DOCTYPE html>
<html>
<head>
<title<%= title %></title>
</head>
<body>
<h1><%= title %></h1>
<h3><%= yesterday %></h3>
<h1> Number of Spins: <%= count %></h1>
<h1> Active User Count: <%= userCount %></h1>
<h1> Users that did not validate: </h1>
<ul>
<% for(var i=0; i<unvalid.length; i++) {%>
<li><%= unvalid[i] %></li>
<% } %>
</ul>
</body>
</html>
问题是,我想在使用Sendgrid的电子邮件中发送此信息。到目前为止,我一直在做的是使用.setHTML方法对它进行“暴力破解”:
email.setHtml('<h1> Spotluck Daily Report </h1><h3>'+ yesterday + '</h3><h1> Number of Spins: '+cuenta+'</h1><h1> Active User Count: '+userCount+'</h1>' +'<h1> Users that did not validate: </h1>');
但是这永远不会有效,因为它无法呈现循环的ejs。所以我的问题是:如何告诉Sendgrid电子邮件呈现我的ejs并将其作为电子邮件发送而不必诉诸.setHTML?
答案 0 :(得分:2)
您可以使用ejs.render(str, subs)
内的setHtml
function来实现此目的。
email.setHtml(ejs.render(yourTemplate, {foo: 'bar'}));
但我建议使用SendGrid的Template Engine,因为我们的节点库supports it。