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回执确认送达正常
failedSMTP 环节出错记录并告警,业务不回滚
hard_bounce地址不存在清理地址库
soft_bounce配额/内容类失败可重试
complaint被投诉停止对该地址发信
suppressed命中抑制名单或熔断先解决名单/信誉
disabled通道关闭检查服务端配置