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

Use email template for contact form using Express/Sendgrid

本文关键字:电子邮件 表单 联系 Express Sendgrid 使用      更新时间:2023-09-26

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

我想使用一个模板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 }}

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

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