2015-07-23 4 views
0

Так что у меня index.ejs, которое делает прекрасно, когда я начинаю свой nodejs сервер:Sendgrid: визуализируйте шаблон ejs и отправьте его по электронной почте.

<!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?

ответ

2

Вы можете достичь этого, используя ejs.render(str, subs)function внутри setHtml.

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

Но я бы рекомендовал использовать SendGrid-х Template Engine после нашей библиотеки узлов supports it.

+0

Так что я пытаюсь выполнить email.setHtml (ejs.render ('../ path/to/index.ejs', {// устанавливаем здесь шаблоны})), но когда я отправляю электронное письмо, просто распечатывает «../path/to/index.ejs» по электронной почте. Предложения? –

+0

Чтобы прочитать файл, вам нужно использовать что-то вроде [readFileSync] (https://github.com/SparkPost/node-sparkpost/blob/master/lib/SendGridCompatibility/index.js). Может быть, даже называть 'toString()' на нем. – eddiezane

+0

Закончено с использованием readFile(). Благодаря! –

Смежные вопросы