Я пытаюсь повторно отправить электронное письмо, если сначала отправка не удалась. Я хочу использовать 2 IP-адреса SMTP, он будет инициировать отправку электронной почты с использованием общего IP-адреса, если система не ответит, она будет использовать второй IP-адрес, если оба не удались, она повторит попытку через 10 минут.
Вот моя строка кода:
var nodemailer = require('nodemailer');
const log = require('../service/log_service')
const emailServer = {
'aotgsupport@abc.com.my':'172.31.xx.xx',
'aotgsupport@abc.com.my':'172.31.178.xx'
};
Вот где я хочу сменить хост, если первый не прошел
exports.sendEmail = (req, recipient, template) => {
_sendContent(req, recipient, template.subject, template.content);
}
async function _sendContent(req, recipient, subject,
emailContent,transportsArr,emailData,callback ) {
var transporter
for (const email in emailServer) {
transporter = nodemailer.createTransport({
host: email,
port: 25,
secure: false,
use_authentication: false,
tls: {
// do not fail on invalid certs
rejectUnauthorized: false
},
debug: true, // show debug output
logger: true // log information in console
})
}
//if all emails fail track this event
if (transportsArr.length == 0) {
if (typeof callback == 'function') {
callback(emailData);
}
return;
}
//remove the first transporter from the array
transporter = transportsArr.shift();
//change from so it is same as sending transporter, to bypass SPAM
emailData.from = transporter.host;
transporter.verify(function (error, _) {
if (error) {
setTimeout(function () { _sendContent(req, recipient, subject, emailContent); }, 600000)
log.updateEmailStatus(req.log, `can't connect to SMTP server: ${error}`)
}
else {
log.updateEmailStatus(req.log, `connected to SMTP server`)
}
});
const name = `${recipient.toLowerCase()}`;
try {
await transporter.sendMail({
from: `aotgsupport@etiqa.com.my`,
to: name,
subject: `${subject}`,
html: emailContent,
});
log.updateEmailStatus(req.log, `Successfully sent to: ${name}, subject: ${subject}`)
} catch (error) {
log.updateEmailStatus(req.log, `Failed to send email: ${error}`)
}
}
Но я получил эту ошибку журналы ошибок .