📧 邮箱设置

Admin 管理员配置 SMTP 服务器参数和邮件通知类型开关。页面包含 SMTP 配置表单(主机/端口/用户/密码/发件人/SSL)和通知类型 Toggle 列表(6种事件)。

路由/email-settings

页面初始化触发

1. 进入页面 → GET /admin/email-config

触发条件:组件首次挂载(useEffect 依赖为空数组)
GET /admin/email-config
✅ 页面加载时自动触发(loading spinner 期间)

请求头Authorization: Bearer {token}

响应

{
  smtp: { host, port, secure, user, pass, from },
  notificationTypes: {
    user_register, user_login, bill_share,
    payment_success, payment_failed, ai_api_error
  }
}

副作用:设置 loading=false,渲染表单

表单编辑(纯前端状态)

表单状态:SMTP 配置和通知类型 Toggle 的修改均在前端 state 管理,修改时不发送请求,仅在点击"保存配置"或"保存并测试"时才提交。

2. 修改 SMTP 字段 → 前端 state 更新

触发条件:修改任何 SMTP 输入框(host/port/user/pass/from)或 SSL checkbox
  • setSmtp({ ...smtp, [field]: value })
  • 无请求

3. 修改通知类型 Toggle → 前端 state 更新

触发条件:切换任意通知类型的 Toggle 开关
  • setNotificationTypes({ ...notificationTypes, [key]: checked })
  • 无请求

保存操作

4. 点击"保存配置" → PUT /admin/email-config

触发条件:点击"保存配置"按钮(saving 时禁用)
PUT /admin/email-config
✅ 点击"保存配置"按钮触发

请求头Authorization: Bearer {token}

参数类型说明
smtp.hoststringSMTP 主机地址
smtp.portinteger端口(默认 587)
smtp.secureboolean是否使用 SSL/TLS(465 填 true,587 填 false)
smtp.userstring用户名
smtp.passstring密码/授权码
smtp.fromstring发件人地址
notificationTypes.user_registerboolean用户注册通知
notificationTypes.user_loginboolean用户登录通知
notificationTypes.bill_shareboolean账单共享通知
notificationTypes.payment_successboolean支付成功通知
notificationTypes.payment_failedboolean支付失败通知
notificationTypes.ai_api_errorbooleanAI API 异常通知

副作用:成功 → 显示绿色成功提示,3秒后自动消失

5. 点击"保存并测试" → PUT /admin/email-config

触发条件:点击"保存并测试"按钮(saving/testing 时禁用)
PUT /admin/email-config
✅ 点击"保存并测试"按钮触发(与保存配置相同请求)

Body:同上(完整 smtp + notificationTypes)

副作用:显示提示"配置已保存!测试邮件功能待实现。"(后端尚未实现独立测试接口)

消息提示

6. 操作结果反馈

触发条件:保存或测试请求返回后
  • 成功:显示绿色提示 + CheckCircle 图标,3秒后自动清空
  • 失败:显示红色提示 + XCircle 图标 + 错误信息

通知类型一览

Key显示名说明
user_register用户注册新用户注册时发送邮件通知
user_login用户登录用户登录时发送邮件通知
bill_share账单共享账单被共享/邀请成员时发送邮件
payment_success支付成功充值/订阅支付成功时发送邮件
payment_failed支付失败充值/订阅支付失败时发送邮件
ai_api_errorAPI 异常AI API 调用异常时通知管理员