email-for-ai:专为 AI 设计的命令行邮件客户端
项目简介
email-for-ai 是一个基于 DDD 架构的命令行邮件客户端,专为 AI 工具友好设计。支持 IMAP/POP3 收件和 SMTP 发件,所有邮件数据存储在本地 SQLite 数据库中,支持 FTS5 全文搜索。
核心功能
📥 邮件收取
- 支持 IMAP 和 POP3 协议
- 本地 SQLite 存储所有邮件
- Message-ID 去重,避免重复同步
- MIME 头自动解码(Base64/Quoted-Printable)
📤 邮件发送
- 支持 SMTP 协议(TLS/SSL)
- 支持邮件撰写和发送
🔍 全文搜索
- 基于 SQLite FTS5 的本地全文搜索
- 支持关键词、发件人、时间范围搜索
- JSON 输出格式,方便 AI 解析
🤖 AI 友好设计
- JSON 输出格式:所有命令支持
-o json参数 - 结构化数据输出,便于 AI 工具调用和解析
- 表格/JSON 双格式输出
🔔 Hook 机制
- 新邮件到达时执行自定义脚本
- 传入 JSON 数据,便于自动化处理
- 支持消息通知、自动处理等场景
📅 正确日期显示
- 显示邮件实际发送时间,而非同步时间
快速开始
安装
# 从 GitHub 下载
https://github.com/liuchenrang/email-for-ai/releases
# 或自行编译
git clone https://github.com/liuchenrang/email-for-ai.git
cd email-for-ai
go build -o bin/email ./cmd/email
添加邮箱账户
# 163邮箱示例(需要使用授权码)
./bin/email account add \
--name "163邮箱" \
--email "your@163.com" \
--imap-host "imap.163.com" \
--imap-port 993 \
--imap-user "your@163.com" \
--imap-pass "你的授权码" \
--smtp-host "smtp.163.com" \
--smtp-port 465 \
--smtp-user "your@163.com" \
--smtp-pass "你的授权码" \
--pop3-host "pop.163.com" \
--pop3-port 995 \
--pop3-user "your@163.com" \
--pop3-pass "你的授权码"
⚠️ 注意:163邮箱需要在网页版设置中开启「POP3/SMTP/IMAP」服务,获取授权码。
同步邮件
# 使用 POP3 同步(推荐,避免 Unsafe Login 问题)
./bin/email sync --protocol pop3 --limit 50
# 使用 IMAP 同步(支持文件夹)
./bin/email sync --protocol imap --limit 50
# JSON 格式输出
./bin/email sync --protocol pop3 --limit 50 -o json
查看邮件
# 列出邮件
./bin/email list
# 只显示未读
./bin/email list --unread
# JSON 格式
./bin/email list -o json
# 阅读邮件详情
./bin/email read <message-id>
# 原始邮件内容
./bin/email read <message-id> --raw
发送邮件
# 撰写并发送
./bin/email compose \
--to "recipient@example.com" \
--subject "测试邮件" \
--body "这是邮件正文内容" \
| ./bin/email send
搜索邮件
# 关键词搜索
./bin/email search "报警"
# 按发件人搜索
./bin/email search --from "safe@service.netease.com"
# 按时间范围搜索
./bin/email search --since "2026-04-01"
# 组合搜索
./bin/email search "ecs" --from "Hangzhou" --since "2026-04-01" -o json
支持的邮箱
163 邮箱
--imap-host imap.163.com --imap-port 993
--smtp-host smtp.163.com --smtp-port 465
--pop3-host pop.163.com --pop3-port 995
💡 使用 POP3 协议可避免 IMAP 的 "Unsafe Login" 错误
QQ 邮箱
--imap-host imap.qq.com --imap-port 993
--smtp-host smtp.qq.com --smtp-port 465
--pop3-host pop.qq.com --pop3-port 995
Gmail
--imap-host imap.gmail.com --imap-port 993
--smtp-host smtp.gmail.com --smtp-port 587
Hook 配置
在配置文件 ~/.email/config.yaml 中设置:
hooks:
on_new_email: "/path/to/script.sh"
新邮件到达时,脚本会收到 JSON 数据:
{
"account_id": "acc_02e9d71c",
"message_id": "msg_44e963ad",
"subject": "ecs报警",
"from": {"name": "Hangzhou", "email": "Hangzhou@yehwang.com"},
"date": "2026-04-03T17:52:15+08:00",
"has_attachments": false
}
AI 应用场景
email-for-ai 的 JSON 输出格式特别适合 AI 工具集成:
1. AI 邮件助手
- 自动监控新邮件
- 根据 Hook 触发 AI 分析
- 自动分类、回复建议
2. 邮件数据分析
- 导出邮件数据为 JSON
- 使用 AI 进行内容分析
- 生成统计报告
3. 自动化工作流
- 新邮件触发脚本
- 结合 AI API 处理邮件内容
- 自动回复、转发、归档
4. 命令行集成
- 在 Shell 脚本中调用
- 管道方式处理数据
- 与其他命令行工具配合
架构设计
项目采用领域驱动设计(DDD)架构:
internal/
├── domain/ # 领域层:聚合根(Message, Account)、值对象、领域服务
├── application/ # 应用层:应用服务(MailService, SyncService)
├── infrastructure/ # 基础设施层:仓储实现、IMAP/POP3/SMTP客户端
├── interface/ # 接口层:CLI命令
pkg/mime/ # MIME解码工具包
数据存储
- 数据库:
~/.email/data.db(SQLite) - 支持FTS5全文搜索
- Message-ID去重,避免重复同步
- MIME头自动解码
配置文件
默认路径:~/.email/config.yaml
database:
path: ~/.email/data.db
sync:
protocol: pop3 # 默认同步协议
limit: 100 # 默认同步数量
display:
format: table # 默认显示格式
hooks:
on_new_email: "/path/to/script.sh" # 新邮件到达时执行的脚本
项目链接
- GitHub:https://github.com/liuchenrang/email-for-ai
- 最新版本:v1.0.0
- 创建时间:2026-04-13
下载地址
- Linux amd64:https://github.com/liuchenrang/email-for-ai/releases/download/v1.0.0/email-linux-amd64
- 其他平台请访问 GitHub Releases 页面
email-for-ai - 让邮件管理更智能,让 AI 集成更简单"