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

标签 javascript node.js express pug sendgrid

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

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

email/contact.jade

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

最佳答案

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

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

关于javascript - 使用 Express/Sendgrid 将电子邮件模板用于联系表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30559426/

相关文章:

javascript - jQuery 使整个 Div 成为带有 _blank 的可点击链接

javascript - indexedDB 无法在 "onupgradeneeded"事件上将数据插入数据库

javascript - 存储 Bootstrap 数据 - 模态、徽章和警报

javascript - AngularJS - 处理手动输入 URL 状态的最佳方式

node.js - MEAN 应用程序中的租赁

javascript - 从 33 升级到 35 后,window.open() 无法在 CHROME 中多次打开窗口

node.js - 安装 verdaccio 后发布到 NPM

node.js - 设置 Passport-jwt 身份验证

node.js - 调试 Node 集群中的杂散未捕获异常 (ECONNRESET)

node.js - 如何通过 Express 中的中间件链识别请求(通过 ID)。