Sendgrid:渲染一个 ejs 模板,然后作为电子邮件发送。
Sendgrid: render an ejs template and then send as an email.
所以我 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 方法对 "brute-force" 进行排序:
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 for 循环。所以我的问题是:如何让 Sendgrid 电子邮件呈现我的 ejs 并将其作为电子邮件发送,而不必求助于 .setHTML?
您可以使用 setHtml
中的 ejs.render(str, subs)
function 来实现此目的。
email.setHtml(ejs.render(yourTemplate, {foo: 'bar'}));
但我建议使用 SendGrid 的 Template Engine since our node library supports it。
所以我 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 方法对 "brute-force" 进行排序:
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 for 循环。所以我的问题是:如何让 Sendgrid 电子邮件呈现我的 ejs 并将其作为电子邮件发送,而不必求助于 .setHTML?
您可以使用 setHtml
中的 ejs.render(str, subs)
function 来实现此目的。
email.setHtml(ejs.render(yourTemplate, {foo: 'bar'}));
但我建议使用 SendGrid 的 Template Engine since our node library supports it。