私はAngular 4 and Nodeアプリケーションを構築しています。ユーザーがフロントエンドに登録すると、そのデータをデータベースに保存してから、nodemailer
パッケージを使用して登録成功のメールを送信します。NodeJSアプリケーションにnodemailerを使用してバックグラウンドで電子メールを送信するにはどうすればいいですか?
ここノード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ジョブのようにバックグラウンドで送信したいと思います。
しかし、私が代わりに送信すると、データベースのトランザクションの後に待っているのジョブとしてそれを送信するためのコードを変換する方法がわからないです。問題で私を助けてください。