我使用html作为内容并发送邮件,但是需要另外一个要求从后端获取数据并需要附加到html。我在路径上得到语法错误任何人都可以帮助我
client.query(query, function(err, result1) {
var renderTemplate = function('/index2.html', result1.rows) {
fs.readFile('/index2.html', 'utf8', function(err, file){
return ejs.render('/index2.html', result1.rows); }} });
答案 0 :(得分:1)
更新:我意识到ejs v1可能不那么流行,因此编辑后可以使用v2。
此示例使用ejs,确保安装ejs 以使此示例正常工作。
我没有编写任何错误处理,如果是用于生产,请务必编写错误处理。
使用插入的数据渲染模板:
var fs = require('fs');
var ejs = require('ejs');
var renderTemplate = function(pathToHtmlTemplate, dataToBeInserted) {
// reads your template file to be used in the callback
fs.readFile(pathToHtmlTemplate, 'utf8', function(err, file) {
// returns a rendered html with data to driver code
return ejs.render(pathToHtmlTemplate, dataToBeInserted);
}
}
您的html模板应使用类似<%= data.name%>的内容。 :
<ul>
<li><%=data.name%></li>
<li><%=data.email%></li>
</ul>
有关图书馆的更多信息:https://github.com/mde/ejs
答案 1 :(得分:0)
如果您的HTML文件已准备好将附加数据,那么您可以像这样使用fs.append:
fs.appendFile(pathToFile, dataToAppend, function(err) {
if (err) // Handle error
transporter.sendMail({
from : xxxx@gmail.com,
to : xxxx@gmail.com,
subject : 'Invitation',
html : pathToFile
})
})
但是如果你有结束标签可能会导致问题......
答案 2 :(得分:0)
你可以使用像nunjucks这样的库(https://mozilla.github.io/nunjucks/api.html#renderstring) var res = nunjucks.render('foo.html',{username:'James'}); 应该给你你想要的HTML。
我没有尝试,但它应该工作。