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