2012-04-02 7 views
7

Ich schreibe eine Nodejs-Anwendung, die HTML-E-Mail mit emailjs senden wird. Im Grunde stelle ich das HTML zur Verfügung, um es als eine Variable zu senden, die ich der Nachricht beifüge.Kann Express mit EJS HTML auf eine Variable rendern (also kann ich als E-Mail senden)?

Anstatt diese Variable mit vielen String-Verkettungen zu erstellen, möchte ich nur eine Ansicht mit express/ejs rendern und den Inhalt der Variablen speichern.

Also anstatt das zu tun:

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

Ich möchte so etwas wie zu tun:

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

dies getan werden kann, und wenn ja, wie ?!

+0

es ist möglich, aber unterscheidet sich je die Motor sehen Sie mit Express verwenden. Welche View-Engine hast du für Express eingestellt? Es würde ungefähr so ​​aussehen: app.set ('view engine', 'your engine here'); –

Antwort

11

Nur require ejs direkt und verwenden gemäß der example, beispiels vereinfachte Nutzung (ohne 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 ja danke - so offensichtlich im Nachhinein und sehr verwandt mit dieser Frage: http://stackoverflow.com/questions/6590333/how-can-i-turn-an-ejs-template-into-a-string I habe gerade die Verbindung nicht hergestellt :-P – Zugwalt

+0

Anzeigen von Helfern, die Sie hinzugefügt haben, um auszudrücken, wird nicht funktionieren, wenn Sie es so machen. –

+0

Vielleicht, aber ich denke nicht, dass das eine Voraussetzung für die Frage war. –