非同期で複数のメールをユーザーに送信したい。ノードjsのループでバルクメールを非同期に送信するにはどうすればよいですか?
user.jsのはemailUtilは=( "./ emailUtil.js")を必要と
VARファイル。 var userdata [100];
//それは、I = 0ましょう(100
も聞かせて、ユーザデータ内に複数のデータがあると仮定し、私はemailBodyは= 'メールの本文' 聞かせて 、emailSubjectは= 'SGTスケジュール'; emailUtil .sendEmail(emailBody、 ''、emailSubject、 ''、 ''、user_data.email、 'あなたの名前'、 '');}
私は機能
を送る私の電子メールを書き、他のファイルでemailUtil.js
//メールUtilのファイル
var nodemailer = require('nodemailer'); // Not the movie transporter! var transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'email id', // Your email id pass: '*******' // Your password } }); module.exports = { sendEmail: function sendMail(varhtml,vartext, varsubject,varfrom, varfrom_name,varto, varto_name, reply_to_email) { //setup e-mail data with unicode symbols var mailOptions = { to: [varto], // list of receivers subject: varsubject, // Subject line text: vartext, // plaintext body html: varhtml // html body }; console.log(mailOptions); // send mail with defined transport object transporter.sendMail(mailOptions, function (error, info) { if (error) { return console.log(error); }else{ return console.log(info); } });
}}
私はすぐに応答を送信します。私は電子メールを待つ必要はありません これを行うために、私はループを使用してメールを送信することを考えていますが、非同期です。
Currenlty、私はメールを送信する前に私の応答を送っていますし、メール機能を呼び出すだけですか?誰かがそのapiに別のリクエストを送ると、node.jsがシングルスレッドであり、このスレッドがコードを実行するのを待っているので(通常のapi呼び出しでメールを送信中)、それは見ないでしょうそのファイルの別のインスタンスを作成するだけで、スレッドを作成できます。
希望私の質問を正しく説明することができます。所望の結果を達成するために、この関数は次のように呼び出すことができる任意の懸念
forループ(または他のループ)を実行中にsendEmail関数を呼び出すと、必要な処理が実行されます。すべてのメールをループループ(LOL)として発火させ、運送業者については何も言わないでください。sendEmailの結果 – yBrodsky
Currenlty、私はメールを送信する前に私の応答を送信し、その後メール機能を呼び出しますか?私はそれのための質問を更新する –
それは動作しません。もしあなたがtransporter.sendEmailのような非同期関数を持っているなら、コールバックや約束を実装する必要があります。 examplifyへの回答を投稿させてください – yBrodsky