用途:为已有服务端渲染(SSR)的 Astro 项目接入 AWS SES,实现联系表单邮件发送。前置条件:需存在带 SSR 适配器(如 @astrojs/vercel、@astrojs/node 等)的 Astro 项目;若没有,需先用 pnpm create astro@latest 创建。
主要能力与使用方式:
- 安装依赖:pnpm add @aws-sdk/client-ses zod。
- 配置 .env:AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_REGION(示例 us-east-2)、FROM_EMAIL、CONTACT_EMAIL_TO,开发可用 DISABLE_EMAIL=true;同时创建 .env.example 并更新 .gitignore(.env、.env.local,保留 !.env.example)。
- 创建邮箱工具 src/lib/email.ts,封装 createSESClient 与 sendEmail;缺少凭据或 DISABLE_EMAIL=true 时返回 null 并跳过发送。
- 创建校验 schema src/shared/schema.ts,用 Zod 校验 firstName、lastName、email、company(可选)、message。
- 创建 API 端点 src/pages/api/contact.ts(prerender=false),解析请求、校验数据、调用 SES 发送,返回 JSON;校验失败返回 400,异常返回 500。
- 创建 React 表单 src/components/ContactForm.tsx,含前端校验、提交状态与错误展示。
- 创建页面 src/pages/contact.astro,以 client:load 加载表单。
- 配置 tsconfig.json 路径别名 @/* 与 @shared/*。
适用场景:Astro 站点的联系页、反馈表单等需通过 AWS SES 发送通知邮件的场景。
限制与注意事项:需在 AWS SES 控制台验证发件邮箱,并创建具备 AmazonSESFullAccess 的 IAM 用户;沙箱模式仅能向已验证地址发信,向未验证邮箱发送需申请生产访问权限。开发时可设置 DISABLE_EMAIL=true 跳过实际发送。资料未提供定价、性能或其他平台支持信息。