Я отправляю почту, используя nodemailer.Мне нужно знать, отправлено ли письмо или нет, и затем обновить мою базу данных, но почта отправляется в транспортере (который, я не думаю, возвращает обещания), который занимает время, и, следовательно, возврат всегда ложен, даже если письмо отправлено.
Это мой файл отправки почты, который я вызываю по другим маршрутам
//mail_file.js
//imports
sendmail= async(req)=>{
let transporter = nodemailer.createTransport({
//settings
});
var mailOptions = {
//mailoptions
};
let resp=false;
await transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log("error is "+error);
resp =false;
}
else {
console.log('Email sent: ' + info.response);
resp=true;
}
});
return resp
}
module.exports = sendmail;
Это маршрут, по которому я его называю:
//imports including the mail_file.js
//somepath.js
router.post('/somepath',(req,res,next)=>{
sendresetmail=async()=>
{
parameters={
//some email parameters
}
return await sendmail(params);
}
sendmail()
.then(response=>{
//response is always false even when the mail is sent
})
.catch(err=>{
//error
})
})
Когда я регистрируюинформация о почте, это после регистрации ответа функции sendmail в somepath.js