2012-04-02 21 views
7

Estoy escribiendo una aplicación nodejs que enviará correo electrónico html usando emailjs. Básicamente proporciono el html para enviar como una variable que adjunto al mensaje.¿Puede Express con EJS renderizar HTML a una variable (para que pueda enviarlo como correo electrónico)?

En lugar de construir esta variable usando muchas concatenaciones de cadenas, me gustaría simplemente renderizar una vista usando express/ejs y guardar los contenidos en la variable.

Así que en lugar de hacer:

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

me gustaría hacer algo como:

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

Se puede hacer esto, y si es así, ¿cómo ?!

+0

que es posible, pero es diferente dependiendo de qué vista del motor que está utilizando con expreso. ¿Qué motor de visualización has configurado para expresar? Se vería algo así como: app.set ('ver motor', 'su motor aquí'); –

Respuesta

11

A sólo require ejs directamente y usar según la example, por ejemplo simplificado de uso (sin almacenamiento en caché):

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í, gracias, tan obvio en retrospectiva y muy relacionado con esta pregunta: http://stackoverflow.com/questions/6590333/how-can-i-turn-an-ejs-template-into-a-string I simplemente no hizo la conexión :-P – Zugwalt

+0

Ver ayudantes que ha agregado para expresar no funcionará si lo hace de esta manera. –

+0

Puede ser, pero no creo que fuera un requisito de la pregunta. –

Cuestiones relacionadas