From 1aa9de530cdc1c45fb2876f3e8ed6dbd3552e701 Mon Sep 17 00:00:00 2001 From: SergeS Date: Tue, 24 Mar 2020 12:30:00 +0100 Subject: [PATCH] Prevent multiple calls to callback When emails are from different domains, ensure that callback is called after all of the emails are sent --- sendmail.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/sendmail.js b/sendmail.js index fc2142f..67258df 100644 --- a/sendmail.js +++ b/sendmail.js @@ -383,9 +383,25 @@ module.exports = function (options) { }); message = signature + '\r\n' + message; } - for (let domain in groups) { - sendToSMTP(domain, srcHost, from, groups[domain], message, callback); + + const domains = Object.keys(groups); + function processDomain() { + const domain = domains.shift(); + if (!domain) { + callback(); + return; + } + + sendToSMTP(domain, srcHost, from, groups[domain], message, (err, msg) => { + if (err) { + callback(err); + } else { + processDomain(); + } + }) } + + processDomain(); }); } return sendmail;