2012-04-02 7 views
7

Sto scrivendo un'applicazione nodejs che invierà e-mail html utilizzando emailjs. Fondamentalmente fornisco l'html da inviare come variabile che allego al messaggio.È possibile esprimere con EJS il rendering dell'HTML su una variabile (quindi posso inviarlo come e-mail)?

Piuttosto che creare questa variabile utilizzando un sacco di concatenazione di stringhe, mi piacerebbe solo eseguire il rendering di una vista utilizzando express/ejs e salvare il contenuto nella variabile.

Così, invece di fare:

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

mi piacerebbe fare qualcosa di simile:

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

questo può essere fatto, e se sì, come si fa ?!

+0

è possibile, ma è diverso a seconda che visualizzare il motore si sta utilizzando con espresso. Quale motore di visualizzazione hai impostato per esprimere? Sembrerebbe qualcosa di simile: app.set ('view engine', 'your engine here'); –

risposta

11

soli require ejs direttamente e utilizzare come per il example, per esempio di utilizzo semplificato (senza caching):

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

Ah sì grazie - così ovvio col senno di poi e molto legato a questa domanda: http://stackoverflow.com/questions/6590333/how-can-i-turn-an-ejs-template-into-a-string I semplicemente non hai effettuato la connessione :-P – Zugwalt

+0

Visualizza gli helper che hai aggiunto per esprimere non funzionerà se lo fai in questo modo. –

+0

Può essere, ma non penso che fosse un requisito dalla domanda. –

Problemi correlati