使用 AWS SES 发送电子邮件时,节点 js 无法捕获错误

Node js unable to catch errors when sending an email using AWS SES

我需要能够捕获在使用 Express 和 AWS SES 发送电子邮件的过程中发生的错误。如果发生错误,例如错误的电子邮件,API 本身会显示 CORS 错误,而在 nodemon 控制台中会记录错误。

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();
};

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
        });
    } })

您正在使用回调调用 sendEmail 函数,但您的函数未使用任何回调。它 returns 一个承诺。

尝试使用 await。

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
        });
    } })