如何使用nodemailer为NodeJS应用程序在后台发送电子邮件?

我正在构build一个Angular 4和Node应用程序。 一旦任何用户在前端注册,我将其数据存储在数据库中,然后想要使用nodemailer包向他们发送成功的注册电子邮件。

这是Node js代码:

  router.post('/', function(req, res, next) { SOME_DATABASE_FUNC() { if(FAILED_CASE) { return res.status(500).json({ title: 'An error occurred', status: 500, error: error }); var mailOptions {...} transporter.sendMail(mailOptions, function (error, info) { if (error) { console.log(error); return res.status(500).json({ title: 'An error occurred', status: 500, error: error }); } console.log('Message', info.messageId, info.response); return res.status(200).json({ message: 'Emailed successfully', details: info }); }); } } }); 

此代码完美工作,但发送电子邮件需要几秒钟,用户必须等待才能显示不符合要求的成功响应。 相反,我想在后台发送它可能是一个asynchronousfunction或像一个cron工作。

但我不知道如何转换代码发送作为一项工作,而不是发送和等待数据库事务后。 请帮我解决这个问题。

使用Process.nextTick()发送电子邮件

发送transporter.sendMail块外的响应。 所以它不会等待邮件发送过程完成。

 transporter.sendMail(mailOptions, function (error, info) { if (error) { console.log(error); return res.status(500).json({ title: 'An error occurred', status: 500, error: error }); } console.log('Message', info.messageId, info.response); }); return res.status(200).json({ message: 'Emailed successfully', details: info });