解决 AWS Lambda 无法发送 SMTP 邮件的问题,你可以按照以下步骤进行操作:
确保你的 Lambda 函数的执行角色具有发送邮件的权限。在 AWS IAM 控制台上,为该角色添加 ses:SendEmail 权限。
在你的 Lambda 函数中,使用 AWS SDK 提供的 Amazon Simple Email Service (SES) 客户端来发送邮件。
下面是一个使用 Node.js 的示例代码:
const AWS = require('aws-sdk');
const ses = new AWS.SES({ region: 'us-west-2' }); // 根据你的 SES 配置选择合适的区域
exports.handler = async (event) => {
const params = {
Destination: {
ToAddresses: ['recipient@example.com'] // 设置收件人的电子邮件地址
},
Message: {
Body: {
Text: {
Data: '这是一封测试邮件' // 设置邮件内容
}
},
Subject: {
Data: '测试邮件' // 设置邮件主题
}
},
Source: 'sender@example.com' // 设置发件人的电子邮件地址
};
try {
const data = await ses.sendEmail(params).promise();
console.log('发送成功', data);
return data;
} catch (err) {
console.error('发送失败', err);
throw err;
}
};
确保替换示例代码中的电子邮件地址和相应的 SES 区域,然后将代码部署到 AWS Lambda 上。
这样,当你触发该 Lambda 函数时,它将使用 SES 客户端发送一封测试邮件。你可以根据自己的需求进行修改和定制。