Amazon SES是亚马逊云科技(AWS)推出的云邮件服务,为电商企业提供了可靠、可扩展且经济高效的邮件发送平台。Amazon SES提供灵活的免费套餐,新客每月最多可免费接收3000条消息,或者通过领取AWS的200美元抵扣金(2025.7.15日后注册)用于抵扣Amazon SES所消耗的成本。本文就基于免费的Amazon SES服务一步步教大家快速搭建邮件发送系统。
一、关于免费Amazon SES
对于企业而言,构建电子邮件软件解决方案或批量发送电子邮件是一项非常具有挑战性、成本高昂且复杂的任务:必须构建基础设施、配置网络、预热IP地址和保护发件人声誉。许多电子邮件发送服务都需要合同磋商和大量的前期费用。
Amazon SES支持几分钟之内开始发送大量电子邮件。提供了多种发送电子邮件的方式,包括Amazon SES控制台、简单邮件传输协议(SMTP)接口和Amazon SES API。可以使用AWS命令行界面 (AWS CLI) 或使用AWS开发工具包 (SDK) 来访问 API。
Amazon SES适用场景包括:
| 场景类型 | 典型用例 | 发送特点 |
| 事务型邮件 | 订单确认、发货通知、密码重置、账单 | 实时触发、高优先级、送达率要求高 |
| 营销型邮件 | 促销活动、新品推荐、用户召回、会员通讯 | 批量发送、可延迟、需要 A/B 测试 |
Amazon SES提供灵活的免费套餐,可以免费试用所需的SES电子邮件功能。在开始使用SES后的12个月内,免费套餐客户每月最多可免费接收3000条消息。
从2025年7月15日起,新的AWS客户将获得高达200美元的AWSFreeTier服务抵扣金,可用于购买符合条件的AWS服务,包括Amazon Simple Email Service。在账户注册时,可以在免费计划和付费计划之间进行选择。免费计划将在账户创建后的6个月内有效。如果升级到付费套餐,剩余的FreeTier服务抵扣金余额将自动计入AWS账单。所有FreeTier服务抵扣金必须在账户创建之日起12个月内使用。
Amazon SES免费套餐包括以下服务:
- 出站电子邮件
- 入站电子邮件
- 虚拟可交付性管理器出站电子邮件处理
发送一封电子邮件按一条消息收费;接收一封电子邮件也按一条消息收费。如果为账户启用虚拟可交付性管理器,则发送的每封电子邮件都按两条消息收费。
例如:在启用虚拟可交付性管理器的情况下,客户每月可以发送1000封邮件(2000条消息费用),接收1000封电子邮件(1000条消息费用),而不会超过修订后的SES免费套餐限制(3000条消息费用)。
二、快速开通Amazon SES服务前置条件:拥有AWS账号和一个已验证的域名
AWS账号注册参考:《亚马逊云科技账号注册流程图解》
若未注册域名参考:《全球主流域名注册商优惠码汇总一览》
Amazon SES提供了完整的Setup Wizard(设置向导),会引导你完成所有必要配置。首次使用Amazon SES时使用Setup Wizard可以避免90%的常见配置错误。

涵盖设置如下:
- 域名身份验证(Domain Identity)
- 身份认证配置(SPF/DKIM/DMARC)
- 生产访问申请(Moving out of sandbox)
- Configuration Set创建
- VDM启用和配置
- 发送测试邮件

电商企业选择区域的三个考虑因素:
- 用户地理位置:选择离目标用户最近的区域,降低延迟
- 合规要求:某些国家/地区有数据本地化要求
- 成本优化:不同区域价格略有差异
| 区域 | 适用场景 | 备注 |
| us-east-1 (弗吉尼亚) | 北美、全球业务 | 功能最全、价格最优 |
| eu-west-1 (爱尔兰) | 欧洲业务 | GDPR 合规 |
| ap-southeast-1 (新加坡) | 东南亚业务 | 亚太区域中心 |
需要注意的是,新账号一般处于沙箱模式,每日最多发送 200 封邮件,发送速率为1 封/秒,并且能发送到已验证的邮箱地址。
申请生产访问权限:进入 SES 控制台 >点击 “Request production access”>填写申请表单(说明业务用途、预期发送量),通常 24 小时内获得批准。
根据电商业务规模规划配额:
| 业务规模 | 日发送量 | 发送速率 | 建议配额 |
| 小型电商 | < 1万 | 5-10 封/秒 | 默认配额即可 |
| 中型电商 | 1-10万 | 10-50 封/秒 | 申请提升至 10万/天 |
| 大型电商 | > 10万 | 50-100 封/秒 | 根据大促峰值申请 |
在 SES 控制台验证你的域名(如 example.com):
1、创建域名身份
2、添加 DNS 记录(SES 会提供具体记录)
3、等待验证完成(通常几分钟)
配置 SPF、DKIM、DMARC:
这三个协议是邮件送达收件箱的关键:
# SPF 记录 – 指定哪些服务器可以代表你的域名发送邮件
example.com. IN TXT “v=spf1 include:amazonses.com ~all”# DKIM 记录 – SES 自动生成,添加到 DNS
# 格式:<selector>._domainkey.example.com# DMARC 记录 – 定义邮件认证失败时的处理策略
_dmarc.example.com. IN TXT “v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com”
相关阅读:《SPF、DKIM和DMARC:用于增强电子邮件安全》
五、选择Amazon SES发送方式Amazon SES提供两种发送方式,根据你的技术栈选择:
方式 1:SMTP 接口(推荐用于现有系统集成)
import smtplib
from email.mime.text import MIMEText# SMTP 配置
smtp_host = “email-smtp.us-east-1.amazonaws.com”
smtp_port = 587
smtp_username = “YOUR_SMTP_USERNAME”
smtp_password = “YOUR_SMTP_PASSWORD”# 发送邮件
msg = MIMEText(“您的订单已发货!”, “plain”, “utf-8”)
msg[“Subject”] = “订单发货通知”
msg[“From”] = “noreply@example.com”
msg[“To”] = “customer@example.com”with smtplib.SMTP(smtp_host, smtp_port) as server:
server.starttls()
server.login(smtp_username, smtp_password)
server.send_message(msg)
方式 2:API/SDK(推荐用于新系统开发)
六、选择IP预热策略import boto3
ses_client = boto3.client(‘ses’, region_name=’us-east-1′)
response = ses_client.send_email(
Source=’noreply@example.com’,
Destination={‘ToAddresses’: [‘customer@example.com’]},
Message={
‘Subject’: {‘Data’: ‘订单发货通知’, ‘Charset’: ‘UTF-8’},
‘Body’: {
‘Text’: {‘Data’: ‘您的订单已发货!’, ‘Charset’: ‘UTF-8’}
}
}
)
Amazon SES提供3种IP预热方式,适合不同场景:
| 预热方式 | 适用场景 | 预热时间 | 控制粒度 | 弹性扩容 | 成本 |
| 自管理预热 | 对 IP 信誉要求极高,不接受 Public IP 分流 | 4-6 周 | 完全自主 | 手动 | $24.95/月/IP |
| 标准自动预热 | 接受前期 Public IP 分流,或已有预热好的 DIP 扩容 | 4 周 | 精细化追踪 | 手动 | $24.95/月/IP |
| 托管 IP 池预热 | 接受前期 Public IP 分流,需要长期弹性扩容 | 自动 | AWS 托管 | 自动 | $24.95/月/IP |
方式 1:自管理预热(Manual Warm-up)
适用场景:
- 对 IP 信誉要求极高的企业(如金融、医疗)
- 不希望使用 Public IP 池发送任何邮件
- 需要完全掌控预热进度
特点:
- 完全手动控制每日发送量
- 不使用 AWS 的 Public IP 池分流
- 需要自己监控和调整预热进度
预热计划:
- Week 1: 500 → 2,000 封/天
- Week 2: 5,000 → 20,000 封/天
- Week 3: 50,000 → 100,000 封/天
- Week 4: 200,000 → 目标量
方式 2:标准自动预热(Standard Auto Warm-up)
适用场景:
- 接受前期利用 Public IP 池分流部分流量
- 已有预热好的 DIP,需要扩容新 IP
- 需要精细化追踪预热进度
特点:
- AWS 自动管理预热进度
- 提供 预热百分比进度追踪(0% → 100%)
- 前期流量自动分流到 Public IP 池
- 可以手动调整预热百分比
预热进度示例:
# 查询预热进度
aws sesv2 get-dedicated-ip –ip 192.0.2.1# 输出示例
{
“DedicatedIp”: {
“Ip”: “192.0.2.1”,
“WarmupStatus”: “IN_PROGRESS”,
“WarmupPercentage”: 45, # 当前预热进度 45%
“PoolName”: “my-pool”
}
}# 手动调整预热进度(高级用户)
aws sesv2 put-dedicated-ip-warmup-attributes \
–ip 192.0.2.1 \
–warmup-percentage 50
优势:
- 精细化控制:可以根据预热百分比做精细化的流量控制
- 度可视化:清楚知道预热到什么阶段
- 灵活调整:可以加速或减速预热进度
方式 3:托管IP池预热(Managed IP Pool)
适用场景:
- 接受前期利用 Public IP 池分流部分流量
- 需要长期弹性扩容 DIP 数量
- 希望最简单的 DIP 使用方式
特点:
- AWS 完全托管 IP 的申请、预热、扩容、释放
- 根据发送量自动增减 IP 数量
- 无需关心预热进度,AWS 自动处理
- 最省心的 DIP 使用方式
自动扩容示例:
初始状态:1 个 DIP,日发送 10 万封
↓
发送量增长到 50 万封
↓
AWS 自动申请并预热第 2 个 DIP
↓
发送量增长到 100 万封
↓
AWS 自动申请并预热第 3 个 DIP
↓
发送量降回 30 万封
↓
AWS 自动释放多余的 DIP
配置示例:
# 创建托管 IP 池
aws sesv2 create-dedicated-ip-pool \
–pool-name managed-pool \
–scaling-mode MANAGED# AWS 会自动:
# 1. 根据发送量决定需要几个 IP
# 2. 自动申请和预热新 IP
# 3. 自动释放不需要的 IP
三种方式的选择建议
决策树:
你是否接受前期使用 Public IP 分流?
├─ 否 → 自管理预热
│ └─ 完全掌控,但需要人工监控
│
└─ 是 → 继续判断
│
├─ 需要精细化控制预热进度?
│ ├─ 是 → 标准自动预热
│ │ └─ 可追踪百分比,灵活调整
│ │
│ └─ 否 → 托管 IP 池预热
│ └─ 最省心,自动扩容
电商实战建议:
| 业务阶段 | 推荐方式 | 原因 |
| 初创期 | 共享 IP | 发送量小,无需 DIP |
| 成长期 | 标准自动预热 | 需要 DIP,但发送量相对稳定 |
| 成熟期 | 托管 IP 池 | 发送量波动大,需要弹性扩容 |
| 大促期 | 标准自动预热 | 提前规划,精细控制 |
重要提示: – 标准自动预热和托管 IP 池都会在前期使用 Public IP 分流,这是正常的 – 如果已有预热好的 DIP,使用标准自动预热扩容新 IP 最合适 – 托管 IP 池是长期来看最简单的方式,适合发送量波动大的业务。
或者可以使用Geeksend、Warmup Inbox、GMass、Snovio、Mailwarm等专业邮件预热工具进行批量操作,相对来说成本更低、自由度更高:
七、配置监控与测试1、设置Configuration Set
Configuration Set 用于捕获邮件发送事件(送达、打开、点击、退信、投诉):
# 创建 Configuration Set
aws sesv2 create-configuration-set \
–configuration-set-name ecommerce-emails# 添加事件目标(发送到 CloudWatch)
aws sesv2 create-configuration-set-event-destination \
–configuration-set-name ecommerce-emails \
–event-destination-name cloudwatch-destination \
–event-destination ‘{
“CloudWatchDestination”: {
“DimensionConfigurations”: [{
“DimensionName”: “campaign”,
“DimensionValueSource”: “MESSAGE_TAG”,
“DefaultDimensionValue”: “default”
}]
}
}’
2、使用SES模拟器测试
在发送真实邮件前,使用模拟器测试各种场景:
八、确保邮件进入收件箱# 测试成功送达
test_addresses = {
‘success’: ‘success@simulator.amazonses.com’,
‘bounce’: ‘bounce@simulator.amazonses.com’,
‘complaint’: ‘complaint@simulator.amazonses.com’,
‘suppressed’: ‘suppressed@simulator.amazonses.com’
}
ISP(互联网服务提供商)通过两个核心指标判断你的发件人声誉:
| 指标 | 健康阈值 | 警告阈值 | 危险阈值 | 说明 |
| 退信率 (Bounce Rate) | < 5% | 5-10% | > 10% | 邮箱地址无效或不存在 |
| 投诉率 (Complaint Rate) | < 0.1% | 0.1-0.5% | > 0.5% | 用户标记为垃圾邮件 |
邮件发送生命周期:
发送前:列表健康管理
# 示例:清理退信邮箱
def clean_bounce_list(email_list, bounce_records):
“””移除硬退信邮箱”””
hard_bounces = {r[’email’] for r in bounce_records if r[‘type’] == ‘Permanent’}
return [email for email in email_list if email not in hard_bounces]# 示例:用户分群
def segment_users(users):
“””根据活跃度分群”””
return {
‘active’: [u for u in users if u[‘last_open_days’] < 30],
‘inactive’: [u for u in users if 30 <= u[‘last_open_days’] < 90],
‘dormant’: [u for u in users if u[‘last_open_days’] >= 90]
}
发送中:实时监控
关键监控指标: – 发送量趋势 – 实时退信率 – 实时投诉率 – API 错误率
发送后:数据分析
九、监控与优化# 计算关键指标
def calculate_metrics(campaign_data):
sent = campaign_data[‘sent’]
delivered = campaign_data[‘delivered’]
opened = campaign_data[‘opened’]
clicked = campaign_data[‘clicked’]return {
‘delivery_rate’: delivered / sent * 100,
‘open_rate’: opened / delivered * 100,
‘click_rate’: clicked / delivered * 100,
‘ctr’: clicked / opened * 100 if opened > 0 else 0
}
VDM 是 SES 内置的可视化监控平台,专为邮件业务运营设计,相比传统的 CloudWatch 指标,VDM 更符合电商运营的实际需求。
为什么 VDM 更适合邮件运营?
传统监控工具(如 CloudWatch)只能统计事件数(PV),但邮件运营更关注:
- 独立用户数(UV):同一用户多次打开只计 1 次
- 真实参与度:过滤机器人和邮件客户端的自动打开
- ISP 级别表现:不同邮件服务商的送达差异
- 趋势对比:历史活动效果对比
VDM 核心优势:
| 维度 | CloudWatch | VDM | 运营价值 |
| 打开率统计 | PV(事件数) | UV(独立用户) | 真实反映用户参与度 |
| 点击率统计 | PV(事件数) | UV(独立用户) | 准确评估转化效果 |
| ISP 分析 | 不支持 | 支持 | 定位送达问题 |
| 历史对比 | 需自建 | 内置 90 天 | 优化活动策略 |
| 配置复杂度 | 需配置 Event Destination | 开箱即用 | 降低技术门槛 |
VDM Dashboard 关键指标:

VDM 送达率监控:
| 指标 | 说明 | 电商运营价值 |
| 送达率 | 成功送达的邮件比例 | 评估邮件系统健康度 |
| 打开率 (UV) | 独立用户打开比例 | 评估主题行吸引力,优化 A/B 测试 |
| 点击率 (UV) | 独立用户点击比例 | 评估内容和 CTA 效果,计算真实转化 |
| 退信率 | 硬退信 + 软退信 | 列表质量指标,触发清洗动作 |
| 投诉率 | 用户标记为垃圾邮件 | 内容质量和频率指标 |
快速启用:
常见问题# 1. 启用 VDM(通过控制台或 CLI)
aws sesv2 put-account-vdm-attributes \
–vdm-attributes ‘{
“VdmEnabled”: “ENABLED”,
“DashboardAttributes”: {“EngagementMetrics”: “ENABLED”},
“GuardianAttributes”: {“OptimizedSharedDelivery”: “ENABLED”}
}’# 2. 启用参与度追踪(打开和点击)
aws sesv2 put-account-vdm-attributes \
–vdm-attributes ‘{
“DashboardAttributes”: {
“EngagementMetrics”: “ENABLED”
}
}’
Q1: 如何确保邮件不进垃圾箱?
A: 五个关键措施: 1. 完整配置 SPF、DKIM、DMARC 2. 只向订阅用户发送 3. 提供明显的退订链接 4. 避免垃圾邮件特征词汇(“免费”、“中奖”等) 5. 保持稳定的发送模式
Q2: 专用 IP 预热需要多久?
A: 通常需要 4 周,逐步增加发送量:第 1 周:每天 500-1000 封;第 2 周:每天 5000-10000 封;第 3 周:每天 50000 封;第 4 周:达到目标发送量。
Q3: 发送延迟是多少?
A: SES 处理时间通常 < 1 秒,最终送达时间取决于接收方 ISP。事务型邮件通常 1-5 秒内送达。
Q4: 如何处理退信和投诉?
A: 自动化处理流程:
# 使用 SNS + Lambda 自动处理
def lambda_handler(event, context):
“””处理 SES 通知”””
message = json.loads(event[‘Records’][0][‘Sns’][‘Message’])if message[‘notificationType’] == ‘Bounce’:
if message[‘bounce’][‘bounceType’] == ‘Permanent’:
# 从数据库移除硬退信邮箱
remove_from_list(message[‘bounce’][‘bouncedRecipients’])elif message[‘notificationType’] == ‘Complaint’:
# 立即停止向投诉用户发送
add_to_suppression_list(message[‘complaint’][‘complainedRecipients’])
相关阅读:
《手把手教你用Hostinger VPS搭建BillionMail邮件服务器》
(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)
微信扫码加好友进群
主机优惠码及时掌握
QQ群号:938255063
主机优惠发布与交流




