Javascript 使用Express/Sendgrid为联系人表单使用电子邮件模板
我有一个简单的联系方式使用 我想使用一个模板Javascript 使用Express/Sendgrid为联系人表单使用电子邮件模板,javascript,node.js,express,pug,sendgrid,Javascript,Node.js,Express,Pug,Sendgrid,我有一个简单的联系方式使用 我想使用一个模板email/contact.jade,它可以编译成HTML并添加正确的上下文。我知道它需要输入payload.html值,但是我一直在思考如何使用模板发送电子邮件 routes.js app.route('/contact') .post(function(req, res) { var template = 'email/contact.jade'; var payload = { to: req.body.emai
email/contact.jade
,它可以编译成HTML并添加正确的上下文。我知道它需要输入payload.html
值,但是我一直在思考如何使用模板发送电子邮件
routes.js
app.route('/contact')
.post(function(req, res) {
var template = 'email/contact.jade';
var payload = {
to: req.body.email,
from: 'example@example.com',
subject: req.body.subject,
html: req.body.message
};
var email = new sendgridClient.Email(payload);
sendgridClient.send(email, function(err, json) {
if (err) {
return console.error(err);
} else {
res.redirect('/thanks');
}
});
});
电子邮件/联系方式。jade
p Thanks
p Name {{ name }}
p Email {{ email }}
p Subject {{ subject }}
p Message {{ message }}
p Thanks
p Name #{name}
p Email #{email}
p Subject #{subject}
p Message #{message}
首先,我不确定你的jade语法是否正确。您可以尝试以下方法: 电子邮件/联系方式。jade
p Thanks
p Name {{ name }}
p Email {{ email }}
p Subject {{ subject }}
p Message {{ message }}
p Thanks
p Name #{name}
p Email #{email}
p Subject #{subject}
p Message #{message}
要将其呈现为HTML,请执行以下操作:
var jade = require('jade');
var templatePath = __dirname + '/contact.jade';
app.route('/contact')
.post(function(req, res) {
var payload = {
to: req.body.email,
from: 'example@example.com',
subject: req.body.subject,
html: jade.renderFile(templatePath, req.body)
};
//...
});
关于玉模板,你是对的。然而,为了让它正常工作,我必须这样做:
var template=fs.readFileSync(\uu dirname+'/contact.jade')
,因为我一直在得到“enoint,没有这样的文件或目录”,我也可以只做html:jade.renderFile(\uu dirname+'/contact.jade',req.body)
。使用renderFile
方法Yes,renderFile
也可以工作,而且可能更好,因为它使jade更容易缓存模板。为了考虑这一点,我对我的答案进行了一些编辑。谢谢,这非常有帮助。我猜您不需要fs
库或var模板='email/contact.jade'
语句。我已经进一步整理了答案。如果您认为这有帮助,请将投票/标记为答案,以便其他人看到:)