Invio di posta utilizzando nodemailer. Ho bisogno di sapere se la posta viene inviata o meno e quindi aggiorna il mio database ma la posta viene inviata nel trasportatore (che non credo restituisca promesse) che richiede tempo e quindi il ritorno è sempre falso, anche se la posta viene inviata .
Questo è il file di invio della posta che chiamo da altri percorsi
//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;
Questo è il percorso dove lo chiamo io:
//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
})
})
Quando registro le informazioni della posta, è dopo la registrazione della risposta della funzione sendmail in somepath.js
transporter.sendMail non restituisce una promessa, utilizza una funzione di callback. cambia il tuo codice
return new Promise((resolve,reject)=>{
let transporter = nodemailer.createTransport({
//settings
});
var mailOptions = {
//mailoptions
};
let resp=false;
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log("error is "+error);
resolve(false); // or use rejcet(false) but then you will have to handle errors
}
else {
console.log('Email sent: ' + info.response);
resolve(true);
}
});
})
}
come ho detto prima, la funzione transport.sendMail () usa call back, ecco perché non puoi usare await lì, ma puoi scrivere una funzione wrapper attorno ad essa in modo da poter usare wait nelle tue funzioni dove hai bisogno di codice più leggibile e pulito. si consideri solo il seguente esempio
async function wrapedSendMail(mailOptions){
return new Promise((resolve,reject)=>{
let transporter = nodemailer.createTransport({//settings});
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log("error is "+error);
resolve(false); // or use rejcet(false) but then you will have to handle errors
}
else {
console.log('Email sent: ' + info.response);
resolve(true);
}
});
}
})
Ora puoi usare questa funzione wrappingSendMail nelle tue altre funzioni come di seguito,
sendmail= async(req)=>{
var mailOptions = {
//mailoptions
};
let resp= await wrapedSendMail(mailOptions);
// log or process resp;
return resp;
}
Secondo la documentazione di Nodemailer :
Tutti i metodi pubblici di Nodemailer supportano sia i callback che le promesse (se il callback è omesso). Devi avere almeno Node v8.0.0 se vuoi usare async..await with Nodemailer
Un esempio può essere trovato qui: https://nodemailer.com/about/#example
Jana Duggar è stata aperta sulla sua ricerca dell'amore. Ecco tutto ciò che ha detto sull'argomento e sulla sua finestra di cinque anni per il matrimonio.
La star di 'Outlander' Sam Heughan ha recentemente rivelato cosa prenderà dal set per ricordare Jamie Fraser, il ruolo che lo ha reso una star.
"She Loves You" è stata scritta in un'ora, registrata in un giorno ed è stata la canzone dei Beatles con una delle loro migliori performance della loro carriera.
Dolly Parton e sua nonna Bessie avevano un rapporto speciale. Nonna Parton era molto malata, ma questo non ha impedito a Dolly di farle uno scherzo.
Si potrebbe pensare che la quercia o il noce americano siano resistenti, ma quando si tratta del legno più duro del mondo, non si avvicinano nemmeno.
L'oceano è pieno di bellezza, ma nasconde anche alcune delle creature marine più spaventose del pianeta. Molti di questi animali si nascondono molto al di sotto della superficie dell'oceano, nel mondo oscuro e ad alta pressione delle profondità marine.
Se stai combattendo contro nemici ostili o ti stai preparando per scenari PvP, conoscere i migliori incantesimi per le spade offerti da Minecraft può darti un vantaggio notevole. Incantare le spade ti permette di infliggere più danni, aumentare il numero di nemici che cadono e aumentare la durata della tua spada.
Quando si parla di paesi socialisti, spesso si immagina un sistema con il pieno controllo del governo e nessuna proprietà privata. Ma nella pratica, le economie socialiste variano notevolmente.
“Children” presenta un cameo di un grande nome e alcune notizie devastanti
Si dice che questo RAV4 sia in condizioni eccellenti ed è pronto per il gioco delle sedie musicali.
Le riprese dei droni hanno ripreso i vigili del fuoco che sembravano lottare per spegnere l'incendio.
Eyes of Wakanda si collega direttamente al MCU, oltre ad aggiornamenti su X-Men '97, What If..., Daredevil e altro ancora.
Il caporedattore di lunga data, entrato a far parte di Vogue America nel 1988, ha annunciato la notizia in una riunione dello staff la mattina di giovedì 26 giugno.
Ava Gardner avrebbe dovuto sposarsi con Mickey Rooney e Frank Sintra, e frequentare diverse altre star di Hollywood. Ecco uno sguardo alla storia sentimentale di Ava Gardner.
John Cleese ha sposato sua moglie, Jennifer Wade, nel 2012. Ecco tutto quello che c'è da sapere sulla moglie di John Cleese, Jennifer Wade.
Dev Patel ha incontrato la sua ragazza nel 2016 sul set di "Hotel Mumbai". Ecco tutto quello che c'è da sapere su Tilda Cobham-Hervey.
Mi colpisce Improvvisamente come spesso accade È di nuovo la via di mezzo <No, non quello nel pacifico tu marrone, quello al carnevale> Ogni titolo a voce alta…..
Nel 2022, con il rilascio di GPT-3, l'abilità di scrittura sembra diventare meno importante. Con l'intelligenza artificiale, anche le persone con una scrittura scadente possono generare personale di qualità.
Nel mondo frenetico e competitivo di oggi, la propria carriera gioca un ruolo significativo nella crescita personale, nella stabilità finanziaria e nella soddisfazione generale della vita. Tuttavia, molte persone si trovano intrappolate in un ciclo inesorabile di stagnazione e insoddisfazione, che si esauriscono gradualmente nella loro vita professionale.
La scorsa settimana ho notato un comunicato stampa, inviato tramite PressGazette (un sito Web di notizie sui media britannici). L'articolo annunciava che Acast, la società di hosting e pubblicità di podcast di Scandi, avrebbe guidato un consorzio di editori "probabilmente i più influenti" nel podcasting.