一个轻量、跨平台的桌面邮箱收件助手,支持验证码快速查找、按账号/主题/发件人/验证码搜索、批量导入账号、代理访问、手动与全量刷新、标记已读、分页浏览等特性。UI 基于 Qt(PySide6),后端采用子进程隔离 IMAP 网络/SSL,降低 UI 卡顿。
GitHub: konbluesky/CodeInbox
- Python 3.10+
- 账号管理
- 启动时选择
accounts.csv;工具栏支持“切换账号文件…”。 - 导入对话框:粘贴纯文本或“从文件…”一键导入,支持分隔符、列序、默认 host、批次保存为
account-时间-批次.csv;导入页带分页预览。
- 启动时选择
- 拉取与刷新
- 默认不自动拉取(可在
config.json里开启auto_start_poll)。 - “刷新”:仅拉取未读(UNSEEN),对当前或全部账号;拉取完成心跳后自动从 DB 重载列表。
- “全部拉取”:进行 ALL 全量扫描,修复“服务器邮件曾被漏拉”的场景。
- 支持仅监控当前账号(默认勾选,避免账号多时全部轮询)。
- 默认不自动拉取(可在
- 搜索与列表
- 顶部搜索框同时匹配 账号/主题/发件人/验证码。
- 账号选择为可编辑下拉,支持“任意相邻/不相邻字符”的子序列匹配补全(例如输入
jd可匹配john.doe@…)。 - 列表分页与每页条数设置,状态栏显示当前进度;复制验证码、双击查看详情并本地标记已读。
- 代理与日志
- 代理:支持 socks5/socks4/http,UI 可配置启用与认证。状态栏显示“代理与连接耗时(ms)”。
- 日志:内置滚动日志文件与控制台输出(可在
config.json设置log_level)。
- 稳定性
- 子进程执行密集 IMAP 操作,后台线程节流进度事件;批量追加新邮件,减少 UI 事件压力。
qt_client.py:Qt 前端应用与交互逻辑email_worker.py:后台轮询/刷新线程与信号net_imap.py:子进程 IMAP 抓取实现db.py:SQLite 本地缓存(邮件、账号)config.py:配置、日志初始化accounts.csv:默认账号文件(username,password,host)config.json:运行配置
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python3 qt_client.py首次启动会弹出“选择账号CSV”。如取消,将使用默认 accounts.csv。
accounts.csv 示例
- host可以不填,默认会使用@后面的host,如:adf@example.com,那么host就是example.com
- 如填写host,且不是使用的stmp和pop3,需要使用加密传输,请使用imap
username,password,host
test@test.com,test123,imap.test.com
test2@test.com,test123,imap.test.com
test3@test.com,test123,imap.test.com
test4@test.com,test123,imap.test.com
test5@test.com,test123,imap.test.com
test6@test.com,test123,imap.test.com
test7@test.com,test123,imap.test.com
test8@test.com,test123,imap.test.com
test9@test.com,test123,imap.test.com
test10@test.com,test123,imap.test.com
- 轮询与拉取
auto_start_poll:是否开机自动开始后台拉取(默认 false)poll_interval_sec:后台轮询间隔initial_fetch_mode/initial_fetch_limit/initial_fetch_on_empty_only
- 验证码提取
code_patterns:正则数组,可在“配置…”直接编辑
- 代理
proxy.enabled、proxy.type(socks5/socks4/http)、proxy.host、proxy.port、proxy.username、proxy.password
- 日志
log_level、log_to_console、log_file、log_max_bytes、log_backup_count
- 刷新
- 选择账号(或“全部账号”)后,点击“刷新”以未读模式同步;完成后心跳会触发从 DB 重载。
- 全部拉取(ALL)
- 点击“全部拉取”,将对当前或全部账号进行全量扫描,适用于需要补拉旧邮件的场景。
- 标记已读
- “全部标记已读”对当前或全部账号生效;本地样式即时变为“非加粗/灰色”。
- 导入账号
- 工具栏“导入…”:支持分隔符、列序(邮箱/密码 1 基索引)、默认 host 与批次保存;下方表格分页预览导入结果。
- 切换账号文件
- 工具栏“切换账号文件…”:选择新的
accounts.csv并立即应用。
- 工具栏“切换账号文件…”:选择新的
pyinstaller --noconfirm \
--name CodeInbox \
--windowed \
--icon app.png \
--add-data "accounts.csv:." \
--add-data "config.json:." \
qt_client.py生成 dist/CodeInbox.app。
pyinstaller --noconfirm `
--name CodeInbox `
--windowed `
--icon app.png `
--add-data "accounts.csv;." `
--add-data "config.json;." `
qt_client.py生成 dist/CodeInbox/CodeInbox.exe。
欢迎到 GitHub 提交 Issue/PR:konbluesky/CodeInbox