轻量级 HTTP 服务,按需生成随机验证码并通过 SMTP 邮箱发送。内置 Web 管理后台,支持在线修改邮件模板、SMTP 配置等,修改后即时生效(无需重启)。
🚀
单文件部署 仅需 Python 3.6+,无任何第三方依赖。
🎨
Web 配置面板 可视化编辑 SMTP、邮件文案、验证码规则,实时预览。
🖼️
内嵌图标 自动读取同目录 icon.jpg 并嵌入邮件 HTML。
📊
详细终端日志 每一步操作实时输出,方便监控与调试。
🧱 系统架构
graph TB
subgraph 业务系统
A[Web / App 后端]
end
subgraph 验证码发送服务
B[HTTP API :58008]
C[配置管理模块]
D[验证码生成器]
E[SMTP 邮件发送器]
F[(config.json)]
G[icon.jpg 可选内嵌图片]
end
subgraph 外部服务
H[163/QQ/企业邮 SMTP]
I[收件人邮箱]
end
A -->|POST /send| B
B --> D
B --> E
C --> F
C -.->|热加载| B
D -.-> E
E -->|读取| G
E --> H
H --> I
⚙️ 请求处理流程
sequenceDiagram
participant Client as 业务系统
participant API as HTTP API (:58008)
participant Gen as 验证码生成器
participant SMTP as SMTP 邮件发送器
participant MailSrv as 163/QQ SMTP
participant User as 收件人
Client->>API: POST /send {"to_email":"..."}
API->>Gen: generate_code(length)
Gen-->>API: 随机数字串
API->>SMTP: send_email(config, to_email, code)
SMTP->>SMTP: 检测 icon.jpg?
alt 有图标
SMTP->>SMTP: 构建 HTML 邮件,内嵌图片
else 无图标
SMTP->>SMTP: 构建纯文本邮件
end
SMTP->>MailSrv: SMTP_SSL 登录并发送
MailSrv-->>SMTP: 发送结果
SMTP-->>API: 成功/失败
API-->>Client: JSON 响应(含 code 可选)
MailSrv->>User: 验证码邮件
🔄 配置热更新流程
sequenceDiagram
participant Admin as 管理员浏览器
participant WebUI as Web 管理界面
participant API as /api/config (POST)
participant Validator as 配置校验器
participant Memory as 当前配置(内存)
participant Disk as config.json
Admin->>WebUI: 修改参数并点击保存
WebUI->>API: POST /api/config (新配置JSON)
API->>Validator: validate_config(new_cfg)
alt 校验失败
Validator-->>API: 错误列表
API-->>WebUI: 400 错误信息
else 校验通过
Validator-->>API: 通过
API->>Memory: 对比新旧配置,记录变更日志
API->>Disk: 写入 config.json
Memory->>Memory: 替换 current_config
API-->>WebUI: 200 成功
WebUI->>Admin: Toast 提示"配置已保存并即时生效"
end
🗂️ 配置文件结构
classDiagram
class SMTP {
+string host
+int port
+string user
+string password
+string from_name
}
class EmailTemplate {
+string subject
+string body
}
class CodeConfig {
+int length
+bool return_code_in_response
}
class ServerConfig {
+int port
}
class Config {
+SMTP smtp
+EmailTemplate email_template
+CodeConfig code
+ServerConfig server
}
Config *-- SMTP
Config *-- EmailTemplate
Config *-- CodeConfig
Config *-- ServerConfig