[英]How do I send email from nodemailer in nodejs using gmail?
[英]How to send email in the background using nodemailer for NodeJS application?
我正在構建一個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
});
});
}
}
});
該代碼可以正常工作,但是發送電子郵件需要花費幾秒鍾的時間,並且用戶必須等待顯示似乎不太合適的成功響應。 相反,我想在后台將其發送為異步函數或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
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.