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