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

时间:2015-05-31 15:56:27

标签: javascript node.js express pug sendgrid

我有一个使用Node Sendgrid helper library的简单联系表单。

我想使用编译为HTML的模板email/contact.jade并添加正确的上下文。我知道它需要进入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 }}

1 个答案:

答案 0 :(得分:1)

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

电子邮件/ 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)
    };
    //...
  });