# Pop 配置简化讨论 **日期**: 2026-04-09 ## 背景 之前的规划中,配置结构有冗余: - IMAP 和 SMTP 各需要独立的 username/password - host/port 需要用户手动填写 ## 讨论内容 ### 最终配置格式 ```yaml from: account: work # 通过 name 引用账户 defaults: encryption: ssl insecure: false unsafe_html: false signature: "" accounts: - name: work email: foolsecret@163.com provider: 163 username: foolsecret@163.com password: xxx imap: host: imap.163.com port: 993 encryption: ssl insecure: false smtp: host: smtp.163.com port: 465 encryption: ssl insecure: false ``` ### 配置说明 | 字段 | 说明 | |------|------| | `from.account` | 通过账户的 `name` 引用默认发件账户 | | `defaults.encryption` | 全局默认加密类型 (`ssl`/`starttls`/`none`) | | `defaults.insecure` | 全局默认跳过 TLS 证书验证 | | 账户内覆盖 | 可以在单个账户的 imap/smtp 内覆盖默认值 | ### 自动识别逻辑 1. **自动识别 Provider**: 通过邮箱后缀自动判断 - `@163.com` → 163 - `@qq.com` → QQ - `@gmail.com` → Gmail - `@outlook.com` / `@office365.com` → Outlook - 其他 → custom 2. **自动填充**: 根据 provider 自动填充 imap/smtp 的 host/port/encryption 3. **统一认证**: username/password 只需在账户顶层配置,会自动复制到 IMAP 和 SMTP ### 向后兼容 **不兼容旧版配置**,需要用户重新配置。 ## 实现计划 | 步骤 | 文件 | 修改内容 | |------|------|---------| | 1 | config.go | 新增 FromConfig 和 DefaultsConfig 结构 | | 2 | config.go | 修改 normalizeAccount() 支持 defaults | | 3 | config.go | 新增 getDefaultFromEmail() 和 getDefaultAccount() | | 4 | main.go | 使用新函数获取默认账户信息 | | 5 | 测试 | 验证配置读取和发送功能 | ## 已完成 - [x] 实现 config.go 修改 - [x] 实现 main.go 逻辑调整 - [ ] 测试配置读取和写入