- 配置文件分离:用户配置与项目配置分离,项目级配置(客户端信息、需要 ID 命令的 provider)放在代码中 - 新增 check_id 字段:用户可选择禁用单个账户的 ID 命令发送 - 简化 provider:只保留 163 和 QQ,移除未使用的 Gmail/Outlook/188 等 - 修复 163 邮箱收件箱问题:通过发送 IMAP ID 命令解决 Unsafe Login 错误 BREAKING CHANGE: 配置文件格式变化,旧配置不兼容
2.0 KiB
2.0 KiB
Pop 配置简化讨论
日期: 2026-04-09
背景
之前的规划中,配置结构有冗余:
- IMAP 和 SMTP 各需要独立的 username/password
- host/port 需要用户手动填写
讨论内容
最终配置格式
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 内覆盖默认值 |
自动识别逻辑
-
自动识别 Provider: 通过邮箱后缀自动判断
@163.com→ 163@qq.com→ QQ@gmail.com→ Gmail@outlook.com/@office365.com→ Outlook- 其他 → custom
-
自动填充: 根据 provider 自动填充 imap/smtp 的 host/port/encryption
-
统一认证: username/password 只需在账户顶层配置,会自动复制到 IMAP 和 SMTP
向后兼容
不兼容旧版配置,需要用户重新配置。
实现计划
| 步骤 | 文件 | 修改内容 |
|---|---|---|
| 1 | config.go | 新增 FromConfig 和 DefaultsConfig 结构 |
| 2 | config.go | 修改 normalizeAccount() 支持 defaults |
| 3 | config.go | 新增 getDefaultFromEmail() 和 getDefaultAccount() |
| 4 | main.go | 使用新函数获取默认账户信息 |
| 5 | 测试 | 验证配置读取和发送功能 |
已完成
- 实现 config.go 修改
- 实现 main.go 逻辑调整
- 测试配置读取和写入