Sendgrid:渲染ejs模板,然后作为电子邮件发送。

时间:2015-07-23 15:39:47

标签: javascript node.js email sendgrid

所以我有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?

1 个答案:

答案 0 :(得分:2)

您可以使用ejs.render(str, subs)内的setHtml function来实现此目的。

email.setHtml(ejs.render(yourTemplate, {foo: 'bar'}));

但我建议使用SendGrid的Template Engine,因为我们的节点库supports it