如何使用AWS Lambda函数定时发送早安自动化邮件?
用AWS Lambda实现每日定时发送早安邮件
你的代码已经实现了核心的邮件发送逻辑,基于AWS SES服务发送文本邮件,以下是完成整个项目还需要的配置步骤和注意事项:
核心代码
// index.mjs import AWS from 'aws-sdk'; const ses = new AWS.SES({ region: 'us-east-1' }); export async function handler(event, context) { const params = { Destination: { ToAddresses: ['djdand4@gmail.com'], }, Message: { Body: { Text: { Data: 'Good morning!' }, }, Subject: { Data: 'Good Morning Greeting' }, }, Source: 'danielcohen.4c@gmail.com', }; try { await ses.sendEmail(params).promise(); console.log('Email sent successfully'); return { statusCode: 200, body: 'Email sent successfully' }; } catch (err) { console.error('Error sending email:', err); return { statusCode: 500, body: 'Error sending email' }; } }
后续必做配置
- 验证SES邮箱地址
- 登录AWS SES控制台,进入「已验证的身份」页面,分别添加并验证代码中的
Source发件邮箱和ToAddresses收件邮箱(沙箱模式下仅支持发送到已验证邮箱)。
- 登录AWS SES控制台,进入「已验证的身份」页面,分别添加并验证代码中的
- 配置Lambda权限
- 给Lambda函数附加包含SES发送权限的IAM策略,示例策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendEmail", "Resource": "*" } ] } - 生产环境建议使用自定义最小权限策略,避免过度授权。
- 给Lambda函数附加包含SES发送权限的IAM策略,示例策略如下:
- 设置每日定时触发
- 打开AWS EventBridge控制台,创建新规则:
- 规则类型选择「计划」,设置计划表达式(比如
cron(0 8 * * ? *)表示UTC时间每日8点触发,需根据本地时区调整)。 - 目标选择你的Lambda函数,完成规则创建。
- 规则类型选择「计划」,设置计划表达式(比如
- 打开AWS EventBridge控制台,创建新规则:
- 替换邮箱地址
- 将代码中
ToAddresses和Source字段的示例邮箱替换为实际要使用的已验证邮箱。
- 将代码中
关键注意事项
- 区域一致性:确保Lambda和SES使用同一区域(代码中指定了
us-east-1),跨区域调用可能引发权限或延迟问题。 - SES沙箱限制:新账号默认处于沙箱模式,无法发送到未验证邮箱,若需发送给任意收件人,需提交退出沙箱的申请。
- 日志排查:如果邮件发送失败,查看Lambda对应的CloudWatch日志,重点检查权限错误、邮箱验证状态、SES发送配额等信息。
内容的提问来源于stack exchange,提问作者Daniel Cohen
相关产品推荐
相关产品推荐

