비동기 적으로 사용하는 사용자에게 여러 개의 메일을 보내려고합니다.노드 js의 루프에서 대량 메일을 비동기 적으로 보내려면 어떻게해야합니까?
의 user.js =이 ("./ emailUtil.js")를 필요로 emailUtil
VAR 파일; var userdata [100];
내버려, 복수의 데이터가있는 유저 데이터의 가정 // (I = 0하자위한
100; 나는 emailSubject = 'SGT 일정'emailBody = '메일의 본문을'하자 ; emailUtil .sendEmail (emailBody, '', emailSubject, '', '', user_data.email, '당신의 이름', ''); } I 기능
를 보내 내 이메일을 작성하는 다른 파일에
을
-
,210
emailUtil.js
// 이메일 백분율 파일
} }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