使用Express / Sendgrid使用电子邮件模板联系表单

我有一个简单的联系表单使用节点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.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'); } }); }); 

电子邮件/ contact.jade

 p Thanks p Name {{ name }} p Email {{ email }} p Subject {{ subject }} p Message {{ message }} 

首先,我不确定你的玉石语法是否正确。 你可以试试这个:

电子邮件/ contact.jade

 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) }; //... });