邮件管理系统 API 文档

面向开发者的 RESTful API 说明,包含鉴权方式、统一返回格式、错误码说明以及完整接口列表。

快速开始

  1. 在「客户中心 → API信息」中查看并复制 API 密钥(API Key)。
  2. 选择需要调用的接口(如 GET /api/mailboxes 获取邮箱列表)。
  3. 在请求头中带上 X-API-Key,并按文档中的参数说明构造请求。
  4. 根据返回的 codemsgdata 处理业务逻辑。

基础地址(Base URL):

http(s)://你的部署域名

例如:https://mail.example.com/api/mailboxes

文档与实现:本页面描述的公开 API(/api/ 下邮箱、邮件、域名等)与后端实现已对齐,按文档开发的第三方软件可正常使用;所有需 API Key 的接口均按该密钥对应账户的套餐进行限额校验。

认证方式

1. API Key 认证(公开 API:/api/...

公开 API(如邮箱管理、邮件管理、域名管理)需要在请求头中携带 API 密钥:

X-API-Key: your_api_key_here
  • API Key 可在客户中心「API信息」中获取。
  • 可通过请求头、Bearer Token 或查询参数三种方式携带:
    • 请求头:X-API-Key: YOUR_API_KEY
    • Bearer:Authorization: Bearer YOUR_API_KEY
    • 查询参数:?api_key=YOUR_API_KEY
按秘钥账户的套餐限制

使用 API 密钥调用的接口严格按该密钥对应客户账户的套餐进行限制。包括:

  • 套餐是否过期(过期后无法创建邮箱)
  • 独立创建数量上限(single_limit
  • 批量创建数量与单次批量上限(batch_limitbatch_register_limit
  • 邮箱总数量上限(mailbox_limit

创建邮箱时若超出限制或套餐过期,将返回 code: 400 及相应 msg(如「您的套餐已过期」「独立创建邮箱数量已达上限」等)。其他只读接口(如获取列表、获取邮件)不受套餐数量限制,但均需有效 API Key。


2. 客户 / 管理 API 认证(/api/customer/.../api/admin/...

客户和管理 API 通常在登录客户中心 / 管理后台后,通过 Cookie 会话完成认证,无需单独传 Token。

如需在第三方系统中直接调用,可在登录接口获取 JWT Token,并在请求头中携带:

Authorization: Bearer your_jwt_token_here

JWT 默认有效期为 24 小时,过期后需要重新登录获取。

统一响应格式

所有接口(除少数文件/HTML返回外)均返回统一 JSON 结构:

{
  "code": 0,          // 业务状态码:0 表示成功,非 0 表示失败
  "msg": "success",   // 描述信息:成功时为说明文字,失败时为错误原因
  "data": {...},      // 返回数据,结构因接口而异
  "timestamp": 1234567890 // 服务器时间戳(秒)
}

常见业务状态码:

  • 0:成功。
  • 400:参数错误 / 业务校验失败(例如:邮箱已存在、配额不足、格式不正确)。
  • 401:未认证(例如:未登录、API Key 无效)。
  • 403:已认证但无权限(例如:账号被封禁、API 已禁用)。
  • 404:资源不存在(例如:邮箱不存在)。
  • 500:服务器内部错误或下游邮件系统错误。

HTTP 状态码通常为 200,业务错误通过 code 字段表示。

邮箱管理 API

需要 API Key 认证

GET /api/mailboxes
获取邮箱列表

参数(均为 Query):

响应: data 为下游邮件系统(宝塔插件)返回的原始结构,通常包含邮箱列表及分页信息,以实际返回为准。

{
  "code": 0,
  "msg": "获取成功",
  "data": { ... },
  "timestamp": 1234567890
}
GET /api/mailbox
查询单个邮箱

参数(Query):

响应: data 为下游邮件系统返回的单个邮箱信息,可能包含 username、full_name、quota、status 等字段。

{
  "code": 0,
  "msg": "获取成功",
  "data": { "username": "user@example.com", "full_name": "用户", "quota": "5 GB", "status": 1, ... },
  "timestamp": 1234567890
}
POST /api/mailboxes
创建邮箱

请求体:

{
  "username": "user@example.com",
  "password": "Abc123!@#",
  "full_name": "用户",
  "quota": "5 GB"
}

参数说明:

注意:邮箱会同步到宝塔邮局,若宝塔返回失败(如参数不符合要求),本系统不会写入本地记录。

响应示例:

{
  "code": 0,
  "msg": "创建成功",
  "data": {
    "username": "user@example.com"
  },
  "timestamp": 1234567890
}
DELETE /api/mailboxes
删除邮箱

参数(Query):

响应示例:

{
  "code": 0,
  "msg": "删除成功",
  "data": { ... },
  "timestamp": 1234567890
}
POST /api/mailboxes/batch
批量创建邮箱

请求体:

[
  {
    "username": "user1@example.com",
    "password": "Abc123!@#",
    "full_name": "用户1",
    "quota": "5 GB"
  },
  {
    "username": "user2@example.com",
    "password": "Def456!@#",
    "full_name": "用户2",
    "quota": "5"
  }
]

参数说明:

响应示例:

{
  "code": 0,
  "msg": "批量创建完成",
  "data": {
    "success_count": 2,
    "failed_count": 0,
    "success": ["user1@example.com", "user2@example.com"],
    "failed": []
  },
  "timestamp": 1234567890
}
DELETE /api/mailboxes/batch
批量删除邮箱

请求体:

{
  "usernames": ["user1@example.com", "user2@example.com"]
}

响应示例:

{
  "code": 0,
  "msg": "批量删除完成",
  "data": {
    "success_count": 2,
    "failed_count": 0,
    "success": ["user1@example.com", "user2@example.com"],
    "failed": []
  },
  "timestamp": 1234567890
}

邮件管理 API

需要 API Key 认证

GET /api/mails/inbox
获取收件箱

参数(Query):

响应: data 为下游邮件系统返回的收件列表结构。

{
  "code": 0,
  "msg": "获取成功",
  "data": { ... },
  "timestamp": 1234567890
}
GET /api/mails/sent
获取已发送邮件

参数(Query): username(必填)、page(默认 1)。

GET /api/mails/junk
获取垃圾箱

参数(Query): username(必填)、page(默认 1)。

GET /api/mails/content
获取邮件内容

参数(Query): path - 邮件路径(必填)。

POST /api/mails/send
发送邮件

请求体:

{
  "mail_from": "sender@example.com",
  "mail_to": ["receiver1@example.com", "receiver2@example.com"],
  "subject": "邮件主题",
  "content": "邮件内容",
  "subtype": "html"
}

参数说明:

DELETE /api/mails
删除单封邮件

参数(Query): path - 邮件路径(必填)。

DELETE /api/mails/batch
批量删除邮件

请求体(JSON):

{
  "paths": ["/path/to/mail1", "/path/to/mail2"]
}
POST /api/mails/mark-junk
标记垃圾邮件

参数(Query): path(必填)、username(必填)。

POST /api/mails/unmark-junk
取消标记垃圾邮件

参数(Query): path(必填)、username(必填)。

域名管理 API

需要 API Key 认证

GET /api/domains
获取域名列表

参数:

返回系统中所有可用的邮件域名。

客户 API

需要 JWT Token 认证

GET /api/customer/domains
获取可用域名列表

返回客户可用的邮件域名列表。

GET /api/customer/mailboxes
获取客户邮箱列表

参数:

GET /api/customer/mail-config
获取邮件配置

返回邮件系统配置,包括自动刷新间隔等。

GET /api/customer/package-status
套餐状态检查

返回客户当前套餐状态信息。

GET /api/customer/recharge-plans
获取充值方案

返回系统中可用的充值方案列表。

GET /api/customer/mails
获取客户邮件列表

参数:

GET /api/customer/mails/search
搜索客户邮件

参数:

GET /api/customer/mails/content
获取客户邮件内容

参数:

GET /api/customer/mails/:id
获取客户邮件详情

参数:

POST /api/customer/mails/:id/read
标记客户邮件为已读

参数:

POST /api/customer/mails/send
发送客户邮件

请求体:

{
  "From": "sender@example.com",
  "To": ["receiver@example.com"],
  "Subject": "邮件主题",
  "Content": "邮件内容",
  "Subtype": "html"
}
POST /api/customer/mails/delete
删除客户邮件

请求体:

{
  "mail_ids": ["/path/to/mail1", "/path/to/mail2"]
}
PUT /api/customer/nickname
更新客户昵称

请求体:

{
  "nickname": "新昵称"
}
POST /api/customer/avatar
上传客户头像

请求体:

multipart/form-data 格式,包含字段:

PUT /api/customer/password
修改密码

请求体:

{
  "old_password": "旧密码",
  "new_password": "新密码"
}
PUT /api/customer/api-key
更新客户API密钥

生成新的API密钥并返回。

管理 API

需要管理员 JWT Token 认证

GET /api/admin/domains
获取域名列表

参数:

GET /api/admin/mails
获取邮件列表

参数:

GET /api/admin/profile
获取管理员个人资料
PUT /api/admin/profile
更新管理员个人资料

请求体:

{
  "nickname": "新昵称",
  "email": "admin@example.com"
}
PUT /api/admin/profile/password
修改管理员密码

请求体:

{
  "old_password": "旧密码",
  "new_password": "新密码"
}
错误码详情

具体原因请查看返回中的 msg 字段,例如:「邮箱已存在」「您的套餐已过期,请续费后再创建邮箱」。