如何使用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 });
- eventEmitter侦听器和具有不同参数的发射器
- Internet Explorer11使用量angular器工作速度太慢
- Angular 4 – Http到HttpClient – 属性'someproperty'在Objecttypes上不存在
- Node.JS +茉莉花+量angular器
- 如何避免validation失败后的“console.log”输出
- $ q.allPromises返回一个数组,但我只想要一个元素,而不是全部
- 将angular2-webpack-starter与NodeJS API REST集成
- angular2快速入门只显示Loading ..而不是index.html的内容
- 量angular器+ Selenium Chrome Docker = WebDriverError:未知错误:Chrome无法启动:退出正常