2012-04-02 18 views
7

Tôi đang viết một ứng dụng nodejs sẽ gửi e-mail html bằng cách sử dụng emailjs. Về cơ bản, tôi cung cấp html để gửi dưới dạng biến mà tôi đính kèm vào thư.Có thể Express với EJS kết xuất HTML thành một biến (vì vậy tôi có thể gửi dưới dạng e-mail) không?

Thay vì tạo biến này bằng cách sử dụng nhiều chuỗi nối, tôi muốn chỉ hiển thị chế độ xem bằng cách sử dụng express/ejs và lưu nội dung vào biến.

Vì vậy, thay vì thực hiện:

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

Tôi muốn làm điều gì đó như:

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

này có thể được thực hiện, và nếu như vậy, làm thế nào ?!

+0

đó là có thể, nhưng là khác nhau tùy thuộc mà xem động cơ bạn đang sử dụng với tốc. Công cụ xem nào bạn đã đặt để thể hiện? Nó sẽ trông giống như: app.set ('view engine', 'engine của bạn ở đây'); –

Trả lời

11

Chỉ require EJS trực tiếp và sử dụng theo example, ví dụ sử dụng đơn giản (không có bộ nhớ đệm):

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 có cảm ơn bạn - rất rõ ràng trong việc nhận thức và rất liên quan đến câu hỏi này: http://stackoverflow.com/questions/6590333/how-can-i-turn-an-ejs-template-into-a-string I chỉ cần không thực hiện kết nối :-P – Zugwalt

+0

Xem những người trợ giúp bạn đã thêm vào diễn đạt sẽ không hoạt động nếu bạn thực hiện theo cách này. –

+0

Có thể, nhưng tôi không nghĩ đó là một yêu cầu từ câu hỏi. –

Các vấn đề liên quan