Может ли Express с EJS отображать HTML в переменную (чтобы я мог отправить ее по электронной почте)? - PullRequest
7 голосов
/ 02 апреля 2012

Я пишу приложение nodejs, которое будет отправлять html электронную почту, используя emailjs .В основном я предоставляю html для отправки в качестве переменной, которую прикрепляю к сообщению.

Вместо того, чтобы создавать эту переменную с использованием большого количества конкатенации строк, я хотел бы просто отобразить представление с использованием express / ejs и сохраните содержимое в переменной.

Поэтому вместо того, чтобы делать:

messageHtml = '<html>'+ ....
message.attach({data: messageHtml, alternative: true});

Я бы хотел сделать что-то вроде:

messageHtml = render('emailTemplate.ejs', viewArgs);
message.attach({data: messageHtml, alternative: true});

Можетэто должно быть сделано, и если так, как?!

1 Ответ

13 голосов
/ 02 апреля 2012

Просто require ejs напрямую и используйте согласно примеру , например, упрощенное использование (без кэширования):

var ejs = require('ejs')
  , fs = require('fs')
  , str = fs.readFileSync(__dirname + '/emailTemplate.ejs', 'utf8'); 

var messageHtml = ejs.render(str, viewArgs);

message.attach({data: messageHtml, alternative: true});
...