1小时前
|
|
|
这份教程为想要实现“网站验证码/找回密码”功能、追求极致性价比且不希望被 AWS 复杂账单反噬的站长编写。
很多站长在网站需要发送验证码时,第一反应是找国内插件或者第三方平台,但其实 **Amazon SES (Simple Email Service)** 才是全球性价比最高的“扫地僧”:发 1000 封信只要 0.1 美元(约 7 毛钱人民币),且到达率极高。
但 AWS 的后台是个“迷宫”,稍不留神就会点错月租 50 刀的开关。这篇文章帮你把坑排完。
---
### 第一阶段:注册与“降噪”设置
注册时,你会面临第一个陷阱。
1. **站点选择**:访问 `aws.amazon.com`。这是“全球站”,支持中国个人注册。
2. **国家填中国**:实名信息、手机号(+86)、国内 Visa/MasterCard 信用卡如实填写。不要翻墙伪装美国人,否则极易触发风控导致封号。
3. **账户计划**:选 **“商业(Professional)”** 填写账户信息(利于后续 SES 审核)。
4. **支持计划(避坑重点)**:注册最后一步,**务必选“基本支持 - 免费(Basic Support)”**。如果选了开发者级,每个月会无缘无故多出 29 美元的月租费。
5. **注册模式**:如果有“免费”和“付费”对比图,建议选**“付费(Paid)”**。它包含 200 刀抵扣金且功能完整,比限期 6 个月的试用版更适合跑正式业务。
---
### 第二阶段:SES 发信域名配置
进入 SES 控制台后,右上角区域建议选 **“东京”或“新加坡”**,国内访问接口速度更快。
1. **创建身份(Identity)**:选 **Domain**,填入你的域名(如 `yourdomain.com`)。
2. **设置 MAIL FROM(专业提速)**:
* 展开高级设置,勾选 **Use a custom MAIL FROM domain**。
* 子域填 `mail`。
* **作用**:这能消除邮件里“由亚马逊代发”的字样,极大降低被 QQ 或 Gmail 判定为垃圾邮件的概率。
3. **关闭两个“收费陷阱”**:
* **Virtual Deliverability Manager**:务必选 **Disabled(禁用)**。
* **Dedicated IP**:务必选 **Standard(标准)**,不要点专用 IP。专用 IP 一个月要 24.95 美元,那是给日发百万级的巨头准备的。
4. **解析 DNS**:点击创建后,把 AWS 给你的 3 条 CNAME 记录填到你的域名解析后台。
---
### 第三阶段:终极挑战——申请“脱离沙盒”
新账号默认是“沙盒模式”,只能发给自己。要给用户发验证码,必须申请 **Production Access**。
* **申请位置**:SES 左侧菜单 -> **Account dashboard** -> **Request production access**。
* **填写指南**:
* **Mail type**:选 **Transactional**(事务性)。
* **小作文模板**:
```
Subject: Request for SES Production Access for Website User Authentication
1. Use Case Description:
We are a startup building a [这里填你的网站类型,例如:Productivity Tool / Community Forum]. We need to use Amazon SES to send essential transactional emails, specifically:
User registration verification codes (OTP).
Password reset links.
Account security alerts.
These emails are critical for our user authentication process and account security.
2. How we collect email addresses:
We only send emails to users who voluntarily register on our website. Users provide their email addresses during the sign-up process, and we use a double opt-in mechanism to ensure the validity of the email.
3. How we handle bounces and complaints:
We have configured Amazon SES to handle bounces and complaints. We will use [Amazon SNS / Internal logs] to monitor delivery status. Any email address that results in a hard bounce or complaint will be automatically removed from our mailing list to maintain a high sender reputation.
4. Expected sending volume:
Our expected initial volume is approximately 50-100 emails per day, which is well within the standard limits.
We have already configured DKIM and SPF records for our domain to ensure maximum deliverability and security. Thank you for your review.
```
**注意**:尽量用英文,理由要正当。审核员会人工看你的网站,如果网站还没做好,起码要做个有模有样的“Coming Soon”页面。
小作文不是申请的时候填写的,是申请之后,后台会生成一个支持案例要求你回复的

---
### 第四阶段:保命设置——2 美元预算预警
AWS 最大的风险是 API 密钥泄露后,黑客拿你的号去群发广告,导致你信用卡刷爆。
1. 搜索 **Budgets** 菜单。

2. **创建预算**:设置 **$2.00** 为每月固定预算。

3. **配置告警**:
* 当**实际支出**达到 $1 时,发邮件给你。
* 当**预测支出**可能超过 $2 时,发邮件给你。
4. **安全建议**:创建 **IAM 用户**,只给它 `AmazonSESFullAccess` 权限。**绝对不要**把 Access Key 写死在代码里直接推送到 GitHub!
---
### 第五阶段:站长最省事建议——“动静分离”
* **发信用 SES**:按照上面的流程发验证码。
* **收信(用户咨询)用 Cloudflare**:
不要去配置 SES 的收信路由(很复杂且容易误开 50 刀的 Mail Manager)。如果你的域名在 Cloudflare,直接搜索 **Email Routing**,设置 `support@yourdomain.com` 免费转发到你的个人邮箱即可。
### 第五阶段:如果你想在客户端里“一眼看到并直接回复”,该怎么操作?
最省钱、最接近“正常邮箱”体验的方案是:**把 SES “挂载”到你已有的常用邮箱(如 Gmail 或 QQ 邮箱)里。**
#### 第一步:设置“收件”(把信收进客户端)
使用 **Cloudflare Email Routing**(完全免费):
1. 将 `support@yourdomain.com` 的邮件转发到你常用的个人邮箱(比如 `yourname@gmail.com`)。
2. 这样,当有人发邮件给 `support@` 时,你的手机 App(已经登录了个人邮箱)会立刻弹出通知。
#### 第二步:设置“回信”(在客户端里用 SES 发信)
你需要把 SES 的 SMTP 凭据填入你的邮箱客户端。以 **Outlook(PC版)** 或 **Gmail(网页版)** 为例:
1. 在客户端的设置里找到 **“添加其他发件地址”** 或 **“账户设置”**。
2. **SMTP 服务器**:输入 SES 的端点(如 `email-smtp.ap-northeast-1.amazonaws.com`)。
3. **端口**:`587`。
4. **用户名/密码**:输入你之前下载的那个 **SES SMTP 凭证**。
5. **回信地址**:填 `support@yourdomain.com`。
#### 最终效果:
* **收信**:新邮件像普通邮件一样出现在你的收件箱里。
* **回信**:你点击回复时,在“发件人”下拉菜单里选择 `support@yourdomain.com`。点击发送后,邮件是通过亚马逊 SES 发出的。**在用户看来,你这就是一个正常的公司邮箱。**
---
### SES 的收费标准(如果你这样用的话)
这种方案的费用极低,因为你**不使用**亚马逊昂贵的存储服务,只使用它的流量。
1. **发件费用 (Outbound)**:
* **0.10 USD / 1,000 封邮件**。
* 如果你每月回 100 封信,费用是 **0.01 美元**。
2. **收件费用 (Inbound)**:
* 用 Cloudflare 转发,**0 元**。
3. **数据传输费**:
* 大约 **0.09 USD / GB**。1,000 封邮件通常只有几十 MB,费用可以忽略不计。
**总计费用:** 只要你每个月的咨询量不超过几千封,你每个月的账单基本就是 **0.1 美元(约 0.7 元人民币)**。
---
### 总结
按照这套流程:
1. **固定支出**:0 元。
2. **按量支出**:1000 封验证码 = $0.1(约 0.7 元)。
3. **安全系数**:极高(有预算预警+DMARC 验证)。
这才是个人站长和开发者最优雅、最省钱的发信姿势。
🫵 来啊,说点有用的废话!
▲