2012-04-02 11 views
7

Piszę aplikację nodejs, która będzie wysyłać e-mail w formacie HTML za pomocą emailjs. Zasadniczo dostarczam kod HTML do wysłania jako zmienną, którą dołączam do wiadomości.Czy Express z EJS renderuje HTML do zmiennej (więc mogę wysłać jako e-mail)?

Zamiast budować tę zmienną przy użyciu dużej ilości konkatenacji ciągów, chciałbym po prostu wyświetlić widok przy użyciu express/ejs i zapisać zawartość do zmiennej.

Więc zamiast robić:

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

chciałbym zrobić coś takiego:

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

można to zrobić, a jeśli tak, to w jaki sposób ?!

+0

jest to możliwe, ale różni się w zależności od silnika, który zobaczyć używasz z Express. Jaki silnik wyświetlania ustawiłeś jako ekspresowy? Wyglądałoby to tak: app.set ("widok silnika", "twój silnik tutaj"); –

Odpowiedz

11

zaledwie require EJS bezpośrednio i używać zgodnie z example, np uprościć użytkowanie (bez buforowania):

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}); 
+0

Ach tak dziękuję - tak oczywiste z perspektywy czasu i bardzo związane z tym pytaniem: http://stackoverflow.com/questions/6590333/how-can-i-turn-an-ejs-template-into-a-string I po prostu nie nawiązał połączenia :-P – Zugwalt

+0

Wyświetl pomocników dodanych do wyrażania nie zadziała, jeśli robisz to w ten sposób. –

+0

Może być, ale nie sądzę, że był to wymóg z tego pytania. –

Powiązane problemy