在Node.js中创建全局电子邮件功能

时间:2018-12-06 07:28:21

标签: node.js mongodb express

我想要一个电子邮件功能,可以在发出任何路由请求时从任何控制器调用它。我在许多路由中都使用了相同的电子邮件功能,但参数差异很小。如何创建可在项目内任何地方调用的全局电子邮件功能以发送电子邮件?

public class Global : System.Web.HttpApplication
{
    protected void Application_Start(object sender, EventArgs e)
    {
        RouteTable.Routes.MapPageRoute("login", "login", "~/login.aspx");
    }
}

我想为此功能创建一个全局函数,只需在其中传递这些参数即可。

1 个答案:

答案 0 :(得分:0)

首先,创建一个js文件。您可以将其命名为mail.js。代码如下:

const sendEmail = (email, subject, body, opt) => {

    // Set default options
    let options = {
        from: 'defaultfrom@test.com', // sender address
        to: email, // list of receivers
        bcc: ['defaultbcc@test.com'],
        subject: subject, // Subject line
        html: body
    };

    // Merge options if any new option provided
    // This will add fields or override old fields
    if (opt) options = { ...options, ...opt };

    // Send email function
    return new Promise((resolve, reject) => {

        if (err) {
            console.log(`Mail couldn't send. Error: ${err}`);
            return reject();
        };

        console.log(`Mail sent successfully`);
        return resolve();

    });

};

// Export function
module.exports = { sendEmail }

此函数将返回一个承诺。只需要求,您就可以在任何路线中使用此功能。您的路线内的用法可能如下:

首先,要求它

const { sendEmail } = require('./mail');

然后;使用它,

sendEmail('email@test.com', 'Subject', 'Body', { from: 'xyz@test.com' })
    .then(() => {
        console.log('Mail sent');
        res.status(200).send();
    })
    .catch((e) => {
        console.log('Error:', e);
        res.status(400).send();
    });