Necesito poder detectar el error que ocurre durante el proceso de envío de un correo electrónico mediante Express y AWS SES. Si ocurre un error, por ejemplo, un correo electrónico incorrecto, la propia API muestra un error de CORS mientras que en la consola de nodemon el error se registra allí.
const AWS = require('aws-sdk'); const SES_CONFIG = { accessKeyId: '...', secretAccessKey: '...', region: '...', }; const AWS_SES = new AWS.SES(SES_CONFIG); let sendEmail = (recipientEmail, name) => { let params = { Source: '...@gmail.com', Destination: { ToAddresses: [ recipientEmail ], }, ReplyToAddresses: [], Message: { Body: { Html: { Charset: 'UTF-8', Data: 'This is the body of my email!', }, }, Subject: { Charset: 'UTF-8', Data: `Hello, ${name}!`, } }, }; return AWS_SES.sendEmail(params).promise(); };El punto final de la API:
router.post('/emailTest', async (req, res) => { try { sendEmail('...@gmail.com', '...', function (err, data) { if (err) res.send(err); res.send(data); }); } catch (error) { res.json({ Status: 500, header: 'Error', message: 'Internal Server Error. ' + error.message }); } })Está llamando a su función sendEmail con una devolución de llamada, pero su función no utiliza ninguna devolución de llamada. Devuelve una promesa.
Intenta usar esperar.
router.post('/emailTest', async (req, res) => { try { const data = await sendEmail('...@gmail.com', '...'); res.send(data); } catch (error) { res.json({ Status: 500, header: 'Error', message: 'Internal Server Error. ' + error.message }); } })