AWS SES 邮件
ses 节点;事务邮件发送。
25 分钟
AWS SES 邮件
全栈路线图 SES 节点介绍 Amazon Simple Email Service:面向开发者的事务邮件通道——注册验证、密码重置、订单通知、联系表单回执。与 fsm-monitoring 里 Monit 的 系统告警邮件 不同,SES 强调 送达率、域名验证、批量与模板;是 fsm-complete 完整应用(用户注册、通知)的常见最后一环。概念课见 fullstack-roadmap,实践对齐 /roadmaps/full-stack SES 节点。
学习目标
- 在 AWS 完成 SES 域名/DKIM 验证,从 sandbox 申请生产发送配额(按账号策略)
- 用 spring-boot-essentials 或 Node 调用 SES API/SDK 发送一封事务邮件(如注册验证链接)
- 说清 SES 与 Monit 本地 mail、第三方 SendGrid 的选型;与 docker-essentials 本地开发 mock 邮件的配合
SES 核心概念
| 概念 | 说明 |
|---|---|
| Identity | 验证的发件域名或邮箱 |
| Sandbox | 新账号仅可向已验证地址发信,需申请解除 |
| Configuration Set | 追踪 bounce、complaint、open(可选) |
| Template | 参数化 HTML/Text 模板 |
发信前必须 验证域名(DNS TXT/CNAME),否则易进垃圾箱或被拒。
Spring Boot 集成思路
添加 AWS SDK v2 或 spring-cloud-aws(视版本选型),配置 region 与 IAM 角色(EC2 instance profile 优于长期 AK/SK):
// 概念示例:SendEmailRequest + 已验证 from 地址
sesClient.sendEmail(req -> req
.destination(d -> d.toAddresses(userEmail))
.message(m -> m.subject(s -> s.data("验证邮箱"))
.body(b -> b.html(h -> h.data(verifyLinkHtml))))
.source("noreply@yourdomain.com"));
密钥走环境变量或 Secrets Manager;禁止 commit .env 含 AWS_SECRET_ACCESS_KEY。本地可用 LocalStack 或 仅 log 不发送 的 @Profile("dev") stub。
联系表单场景
react-essentials 前端表单 → spring-boot-essentials POST /api/contact → 后端 SES 发给运营邮箱。需 rate limit 与 captcha/honeypot 防滥用;与路线图视频「Contact Form With AWS SES」同一链路。
与监控、CI 的关系
- Monit alert 可用 SES SMTP 接口,但建议 独立配置集 与事务邮件区分统计
- github-actions-essentials 集成测试 真发邮件;mock SES 或 assert SDK 被调用