Создать глобальную функцию электронной почты в Nodejs - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужна функция электронной почты, которую я могу вызывать с любого контроллера, когда по любому маршруту сделан запрос.Я поставил одну и ту же функцию электронной почты на многих маршрутах, имеющих небольшую разницу в параметрах.Как я могу создать глобальную функцию электронной почты, которую я могу вызывать из любого места в моем проекте для отправки электронной почты?

router.post('/route1',(req, res, next) => {


    const email = 'something';
    const subject = 'something' ;
    const body = 'something';

    const mailOptions = {
        from: 'something', // sender address
        to: 'something', // list of receivers
        bcc:['something','something'],
        subject: subject, // Subject line
        html: "<p><h2><b>Hello</b></h2><p>
    };

    transporter.sendMail(mailOptions, function (err, info) {
        if (err) {
            console.log(err);
            return res.json({ success: false, msg: 'Failed To Send Email ! Try Again.' });
        }
        else {
            return res.json({ success: true, msg: 'Mail Sent Successfully' });
        }
    });
});

Я хочу создать глобальную функцию для этой функции, где я могу просто передать эти параметры.

1 Ответ

0 голосов
/ 06 декабря 2018

Сначала создайте файл 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();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...