邮件是所有营销渠道中ROI最高的。每花费1美元可获得36美元回报。然而大多数初创公司将其视为事后诸葛亮 - 批量发送、无个性化、进入垃圾邮件文件夹。
技能概述
email-systems 技能是一个全面的邮件系统技能包,涵盖事务性邮件、营销自动化、可送达性和可扩展的基础设施决策。该技能帮助开发者构建可靠、高效的邮件系统,确保邮件成功送达收件箱。
下载地址:agentic-awesome-skills/skills/email-systems at main · sickn33/agentic-awesome-skills · GitHub
核心原则
五大核心原则:
- 事务性与营销分离:事务性邮件(密码重置、收据)需要100%送达率。营销邮件优先级较低。使用独立的IP地址和提供商保护事务性邮件的可送达性。
- 许可至上:只向主动要求接收的人发送邮件。营销邮件使用双重确认。轻松取消订阅。无情清理列表。糟糕的列表会破坏可送达性。
- 可送达性是基础设施:SPF、DKIM、DMARC不是可选的。预热新IP。监控退信率。可送达性通过技术设置和良好行为赢得。
- 一封邮件一个目标:每封邮件应该只有一个目的和一个CTA。多个请求意味着没有任何东西被点击。清晰的单个行动。
- 时间和频率很重要:错误的时间 = 低打开率。太频繁 = 取消订阅。让用户设置偏好。测试发送时间。尊重收件箱疲劳。
主要模式
1. 事务性邮件队列
对所有事务性邮件进行排队,具有重试逻辑和监控。
适用场景
发送任何关键邮件(密码重置、收据、确认)
// 不要在邮件发送上阻塞请求
await queue.add(
'email',
{
template: 'password-reset',
to: user.email,
data: { resetToken, expiresAt }
},
{
attempts: 3,
backoff: { type: 'exponential', delay: 2000 }
}
);
2. 邮件事件跟踪
跟踪送达、打开、点击、退信和投诉。
适用场景
任何邮件营销活动或事务性流程
# 跟踪生命周期:
- Queued: 邮件进入系统
- Sent: 交给提供商
- Delivered: 到达收件箱
- Opened: 收件人查看
- Clicked: 收件人参与
- Bounced: 永久失败
- Complained: 标记为垃圾邮件
3. 模板版本控制
对邮件模板进行版本控制以便回滚和A/B测试。
适用场景
更改生产邮件模板
templates/
password-reset/
v1.tsx (当前)
v2.tsx (测试10%)
v1-deprecated.tsx (已归档)# 逐步部署新版本
# 在全面推出前监控指标
4. 退信处理状态机
自动处理退信以保护发件人声誉。
适用场景
处理退信和投诉webhook
switch (bounceType) {
case 'hard':
await markEmailInvalid(email);
break;
case 'soft':
await incrementBounceCount(email);
if (count >= 3) await markEmailInvalid(email);
break;
case 'complaint':
await unsubscribeImmediately(email);
break;
}
5. React邮件组件
使用可重用的React组件构建邮件。
适用场景
创建邮件模板
import { Button, Html } from '@react-email/components';
export default function WelcomeEmail({ userName }) {
return (
<Html>
<h1>Welcome {userName}!</h1>
<Button href="https://app.com/start">
Get Started
</Button>
</Html>
);
}
6. 偏好中心
让用户控制邮件频率和主题。
适用场景
构建营销或通知系统
Preferences:
☑ Product updates (weekly)
☑ New features (monthly)
☐ Marketing promotions
☑ Account notifications (always)# 在所有发送中尊重偏好
# GDPR合规必需
常见陷阱
1. 缺少SPF、DKIM或DMARC记录
严重性:关键
症状:邮件进入垃圾邮件文件夹、低送达率、mail-tester.com评分低于8
解决方案:
# 必需的DNS记录:
## SPF (Sender Policy Framework)
TXT record: v=spf1 include:_spf.google.com include:sendgrid.net ~all## DKIM (DomainKeys Identified Mail)
TXT record由您的邮件提供商提供
为邮件添加加密签名## DMARC (Domain-based Message Authentication)
TXT record: v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com
2. 使用共享IP发送事务性邮件
严重性:高
症状:密码重置进入垃圾邮件、送达不一致、使用同一提供商发送营销和事务性邮件
解决方案:
- 选项1:专用IP(高容量)- 从提供商获取专用IP,缓慢预热(从100/天开始),保持一致的容量
- 选项2:仅事务性提供商- Postmark(非常严格,声誉极佳)、包含高标准的共享池
- 分离关注点:事务性:Postmark或Resend,营销:ConvertKit或Customer.io,永不混合
3. 不处理退信通知
严重性:高
症状:反复发送到相同的死地址、退信率攀升、邮件提供商威胁暂停账户
解决方案:
- 硬退信:首次发生时立即删除,无效地址、域不存在
- 软退信:72小时内重试3次,3次失败后视为硬退信
- 监控:按营销活动跟踪退信率,退信率超过1%时报警
4. 缺少或隐藏取消订阅链接
严重性:关键
症状:用户因无法取消订阅而标记为垃圾邮件、垃圾邮件投诉上升、CAN-SPAM违规
解决方案:
- 可见性:在邮件页脚首屏上方、清晰文本、不隐藏
- 一键取消:链接直接取消订阅、无需登录、无"确定吗"的障碍
- List-Unsubscribe头部:支持一键取消订阅
5. 从新IP立即发送高容量
严重性:高
症状:刚切换提供商、立即开始每天发送50,000封邮件、大量送达问题
解决方案:
# IP预热计划:
Week 1: 50-100 emails/day
Week 2: 200-500 emails/day
Week 3: 500-1000 emails/day
Week 4: 1000-5000 emails/day
Continue doubling until at volume
最佳实践
- 始终配置SPF、DKIM和DMARC记录
- 将事务性邮件和营销邮件分离到不同的提供商或IP
- 使用队列系统发送邮件,不要阻塞请求
- 实施退信处理和投诉处理
- 提供清晰的取消订阅选项和偏好中心
- 监控邮件指标(送达率、打开率、点击率、退信率)
- 对新IP进行预热,逐步增加发送量
- 使用双重确认建立营销邮件列表
关键指标
| 指标 | 目标值 | 警告阈值 |
|---|---|---|
| 退信率 | <2% | >2% |
| 垃圾邮件投诉率 | <0.1% | >0.1% |
| 打开率 | >20% | <10% |
| 点击率 | >2% | <1% |
| 取消订阅率 | <0.5% | >1% |