【问题标题】:DRY code for sending email with SendGrid使用 SendGrid 发送电子邮件的 DRY 代码
【发布时间】:2015-01-18 15:29:18
【问题描述】:

我在发布路线中有这段代码:

第一个是当用户在我的网站注册时提醒我:

sendgrid.send({
        to:         "my@email.com",
        from:       "myother@email.com",
        subject:    "[ALERT] " + req.body.eventDate,
        html:       "SOME HTML",
    },
    function(err, json) {
        if (err) {
            return console.error(err);
        } 
        else {
            next();
        }
});

下一封是发送给新注册会员的确认邮件:

sendgrid.send({
        to:         req.body.email,
        from:       "my@email.com",
        subject:    "[CONFIRM] register" + req.body.eventDate,
        html:       "SOME HTML",
    },
    function(err, json) {
        if (err) {
            return console.error(err);
        } 
        else {
            next();
        }
});

正在 100% 工作,但这不是一个好习惯,有很多重复项。我可以把这个晒干吗?如果是这样,howww??

谢谢!!!

【问题讨论】:

标签: javascript node.js express sendgrid


【解决方案1】:

你可以像这样创建一个函数来执行使用sendgrid发送电子邮件的操作,

function sendEmail(options) {
  sendgrid.send(options,
    function(err, json) {
        if (err) {
            return console.error(err);
        } 
        else {
            next();
        }
  });
}

然后你可以使用上面创建的函数如下,

用于发送注册邮件

var registrationEmailOptions = {
        to:         "my@email.com",
        from:       "myother@email.com",
        subject:    "[ALERT] " + req.body.eventDate,
        html:       "SOME HTML",
}
sendEmail(registrationEmailOptions);

用于发送确认邮件。

var confirmationEmailOptions = {
        to:         req.body.email,
        from:       "my@email.com",
        subject:    "[CONFIRM] register" + req.body.eventDate,
        html:       "SOME HTML",
}
sendEmail(confirmationEmailOptions);

【讨论】:

  • 有趣!但是我可以使用相同的对象名称吗??
  • 你可以,但我会劝阻你这样做。为选项对象提供有意义的名称,例如 confirmationEmailOptionsregistrationEmailOptions。检查我的编辑
  • Kelsadita..你知道为什么error is not会在函数内部出现undefined吗??
猜你喜欢
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 2018-08-09
相关资源
最近更新 更多