API 接入文档
三步:拿到密钥 → 建模板 → 调 /api/v1/send。完整字段说明见 OpenAPI 与仓库内 docs/API接入文档.md。
1 · 认证
所有数据面接口都走 Bearer 密钥,支持两种写法:
Authorization 头 / X-API-Key
Authorization: Bearer gm_live_xxxxxxxxxxxxxxxx # 或 X-API-Key: gm_live_xxxxxxxxxxxxxxxx
2 · 发送邮件
POST https://gomail.gogo198.net/api/v1/sendapplication/json
curl -X POST https://gomail.gogo198.net/api/v1/send \
-H "Authorization: Bearer $GOMAIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "someone@example.com",
"template_key": "member_invite",
"variables": {"inviter": "老马", "team": "GoBridge", "url": "https://gobridge.gogo198.net/invite?token=abc"}
}'
返回 status=sent 即已投递;suppressed 表示命中抑制名单或熔断,failed 表示 SMTP 环节出错 —— 后两者都是 200 响应,业务自行降级,不该回滚自己的业务状态。
3 · Python 示例
python / httpx
import httpx
resp = httpx.post(
"https://gomail.gogo198.net/api/v1/send",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"to": user_email,
"template_key": "member_invite",
"variables": {"inviter": inviter_name, "team": team, "url": invite_url},
},
timeout=8.0,
)
payload = resp.json()
# Gomail 返回 200 但业务失败(failed/suppressed)不算异常:那是业务结果,不是网络故障
if payload["status"] != "sent":
logger.warning("mail not delivered: %s", payload)
状态字典
| status | 含义 | 业务建议 |
|---|---|---|
| sent | 已交给上游 SMTP | 正常 |
| delivered | 回执确认送达 | 正常 |
| failed | SMTP 环节出错 | 记录并告警,业务不回滚 |
| hard_bounce | 地址不存在 | 清理地址库 |
| soft_bounce | 配额/内容类失败 | 可重试 |
| complaint | 被投诉 | 停止对该地址发信 |
| suppressed | 命中抑制名单或熔断 | 先解决名单/信誉 |
| disabled | 通道关闭 | 检查服务端配置 |