2.5 KiB
2.5 KiB
Pop 功能规划讨论
日期: 2026-04-09
需求概述
增加两个核心功能:
- 发送历史记录 - 使用 SQLite 存储已发送/失败的邮件
- 邮件接收功能 - 通过 IMAP 获取收件箱中未读邮件
详细设计
1. 发送历史记录
- 使用 SQLite (
history.db) 存储 - 字段:发件人、收件人、CC、BCC、主题、正文(纯文本/HTML)、附件、状态(已发送/草稿)、发送时间、交付方式
- 发送成功 → 标记 "sent",发送失败 → 标记 "draft"
2. 邮件接收功能
- 使用 IMAP 协议连接邮箱
- 仅获取 7天内未读 的邮件
- 不下载完整内容到本地,每次从 IMAP 拉取最新数据(轻量版)
- 支持多账户,合并展示
3. 收件箱看板 (Inbox UI)
- 新命令:
pop inbox - 使用
bubbles/list组件 - 显示格式:
<来源> · <发件人> - <主题> <时间> - 支持搜索/过滤 (输入 "163" 可过滤来源)
4. 配置扩展
accounts:
- name: "工作邮箱"
email: "user@163.com"
imap:
host: "imap.163.com"
port: 993
username: "user@163.com"
password: "xxx"
smtp:
host: "smtp.163.com"
port: 465
username: "user@163.com"
password: "xxx"
encryption: "ssl"
# 兼容原有单账户配置
from: "user@163.com"
smtp:
host: "smtp.163.com"
...
常见邮箱 IMAP 配置
| 运营商 | IMAP Host | Port |
|---|---|---|
| 163 | imap.163.com | 993 |
| imap.qq.com | 993 | |
| Gmail | imap.gmail.com | 993 |
| Outlook | outlook.office365.com | 993 |
文件变更计划
新增文件
history.go- SQLite 操作imap.go- IMAP 接收inbox.go- 收件箱 TUI 入口inbox/model.go- 收件箱 Model
修改文件
config.go- 支持多账户email.go- 发送后记录历史main.go- 新增 inbox/history 子命令
新增依赖
github.com/mattn/go-sqlite3github.com/mattn/go-imap
命令行接口
pop inbox # 打开收件箱
pop history # 查看发送历史
pop history --draft # 只看草稿
待定问题
- 发送历史存储哪些信息 - 完整信息
- 收件箱针对所有账户还是单一账户 - 合并收件箱
- 新功能是否修改现有 TUI - 独立命令
- 搜索功能 - 使用 list 组件内置 Filter
- 来源标识 -
<来源> · <主题>格式 - 是否本地存储已接收邮件 - 轻量版,不存储