邮件基础设施指南
使用 Python 调用邮件 API
在 Flask、Django、FastAPI 或 worker 中安全发送事务性邮件的后端实现模式。
Python 服务应从受信任的服务端代码发送邮件,校验输入,记录响应 ID,并在投递不应阻塞请求时使用任务队列。
实际意味着什么
- 由环境统一管理的凭据
- 经过校验的邮件请求体
- 通过异步或队列任务处理重试
- 包含消息 ID 的结构化日志
实施检查清单
- 从密钥管理服务或环境变量加载 API 密钥。
- 在发起请求前校验邮件字段。
- 设置超时,并对可重试的失败进行分类。
- 持久化保存返回的服务商消息 ID。
- 随着发送量增长,将非紧急邮件移到队列 worker 中处理。
团队常问的问题
在 Python 中应该使用 SMTP 还是 HTTP 邮件 API?
两者都可行,但 HTTP API 通常提供更清晰的身份验证、JSON 请求体和结构化的投递响应。
重试应该如何进行?
对传输失败或速率限制失败使用退避重试;不要自动重复可能导致重复发送的失败请求。