FireMail Plus 是一个现代化的邮件客户端应用,采用最新的技术栈构建,为用户提供优雅、高效的邮件管理体验。项目采用前后端分离架构,支持多种邮件提供商,具备完整的邮件收发、管理和搜索功能。
- 🚀 现代化技术栈 - Next.js 15 + React 19 + Go 1.24
- 📱 响应式设计 - 完美适配桌面端和移动端
- 🔐 多重认证 - 支持 OAuth2(Gmail、Outlook)和自定义 IMAP/SMTP
- ⚡ 实时同步 - 基于 SSE 的实时邮件同步
- 🎨 优雅界面 - 基于 shadcn/ui 的现代化 UI 设计
- 🔍 智能搜索 - 全文搜索和高级过滤功能
- 📎 附件支持 - 完整的附件上传、下载和预览
- 🌙 主题切换 - 支持明暗主题自动切换
- 前端技术栈:采用最新的 Next.js 15 App Router 和 React 19,享受最新的性能优化和开发体验
- 后端架构:使用 Go 语言构建高性能后端,支持并发处理和快速响应
- 类型安全:全栈 TypeScript 支持,确保代码质量和开发效率
- 组件化设计:基于 shadcn/ui 的模块化组件系统,易于维护和扩展
- OAuth2 认证:支持 Gmail、Outlook 等主流邮件服务的安全认证
- JWT 令牌:安全的用户会话管理
- 数据加密:敏感信息加密存储
- 权限控制:细粒度的用户权限管理
- 响应式布局:自适应桌面、平板和手机屏幕
- 移动端优化:专门优化的移动端交互体验
- 跨浏览器兼容:支持主流现代浏览器
- 服务端渲染:Next.js SSR 提供更快的首屏加载
- 智能缓存:多层缓存策略优化性能
- 并发处理:Go 协程支持高并发邮件同步
- 增量同步:只同步新邮件,减少网络开销
- Docker 容器化:一键部署,环境隔离
- 配置简单:环境变量配置,无需复杂设置
- 自动备份:数据库自动备份机制
- 监控友好:内置健康检查和日志系统
- Gmail (暂时只支持应用密码登录)
- Outlook
- QQ邮箱
- 163邮箱
- 自定义IMAP/SMTP
这是最简单的部署方式,适合生产环境使用。
# 1. 克隆项目
git clone https://github.com/fengyuanluo/firemailplus.git
cd firemailplus
# 2. 配置环境变量(可选)
cp .env.example .env
# 编辑 .env 文件,修改管理员密码和 JWT 密钥
# 警告:请长期保存 JWT_SECRET;如配置 ENCRYPTION_KEY 也必须保存,否则历史邮箱凭据无法解密。
# 3. 启动服务
docker-compose up -d
# 4. 查看服务状态
docker-compose ps
# 5. 查看日志
docker-compose logs -f服务启动后,访问 http://localhost:3000 即可使用。
如果 Docker Hub 基础镜像拉取不稳定,可以把构建阶段指向内部镜像缓存或 registry mirror,而不需要修改 Dockerfile:
GO_BASE_IMAGE=registry.example.com/library/golang:1.24-alpine \
NODE_BASE_IMAGE=registry.example.com/library/node:20-alpine \
docker-compose build --pull
docker-compose up -d本地脚本也支持 transient registry 失败重试:
GO_BASE_IMAGE=registry.example.com/library/golang:1.24-alpine \
NODE_BASE_IMAGE=registry.example.com/library/node:20-alpine \
DOCKER_BUILD_RETRIES=5 \
DOCKER_BUILD_RETRY_DELAY=15 \
./scripts/docker-build.sh默认管理员账户:
- 用户名:
admin - 密码:
admin123(建议修改)
适合快速体验和测试环境。
# 1. 拉取镜像
docker pull luofengyuan/firemailplus:latest
# 2. 创建数据卷
docker volume create firemail_data
docker volume create firemail_logs
# 3. 运行容器
docker run -d \
--name firemail-app \
-p 3000:3000 \
-v firemail_data:/app/data \
-v firemail_logs:/app/logs \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=your_secure_password \
-e JWT_SECRET=your_jwt_secret_key \
-e EXTERNAL_OAUTH_SERVER_URL=https://oauth.windyl.de \
luofengyuan/firemailplus:latest
# 4. 查看容器状态
docker ps
docker logs firemail-app适合开发者进行二次开发和调试。
# 1. 克隆项目
git clone https://github.com/fengyuanluo/firemailplus.git
cd firemailplus
# 2. 启动后端服务
cd backend
cp .env.example .env
# 编辑 .env 文件配置
go mod download
go run cmd/firemail/main.go
# 3. 启动前端服务(新终端)
cd frontend
pnpm install
pnpm dev前端服务:http://localhost:3000
后端服务:http://localhost:8080
本仓库的 /api/v1 契约以 openapi/firemail.yaml 为源头。新增或调整公开 API 时,先修改 OpenAPI,再重新生成后端接口类型和前端 SDK,最后补 handler/service 适配与测试;不要手工编辑生成目录中的业务逻辑。
生成物归属:
- 后端生成物:
backend/internal/api/generated - 前端生成物:
frontend/src/api/generated - 后端 adapter:
backend/internal/api/server.go - 前端兼容 facade:
frontend/src/lib/api.ts
常用命令:
# 校验 OpenAPI、路由覆盖、前端 facade 映射,并重新生成后端/前端生成物
make check-api-generated
# 仅重新生成后端和前端 OpenAPI 产物
make generate-api
# 后端全量测试
cd backend && go test ./...
# 前端类型检查
cd frontend && pnpm type-check当前 v1 为兼容优先:保留 /api/v1、SuccessResponse / ErrorResponse 包装、SSE text/event-stream、以及现有浏览器 EventSource query token 兼容路径。Redocly 对 /api/v1/emails/draft/{id} 与 /api/v1/emails/{id}/... 的 9 条 no-ambiguous-paths 警告是已知 v1 路径兼容风险,不影响当前生成和测试门禁。
- Gmail授权登录无法使用(谷歌得先经过认证...看我啥时候有时间写隐私说明和用户说明什么的吧)
- 部分复杂邮件解析仍然存在问题(这方面真的尽力了...例子是163某些真的不知道什么鬼)
- 支持PWA
- 支持谷歌授权登录
- 支持更多邮箱(尤其IMAP/SMTP基本认证支持的欢迎提Issue,虽然期末周了可能会比较拖)
FireMail Plus 致力于为用户提供现代化、高效的邮件管理体验。我们采用最新的技术栈,遵循最佳实践,确保项目的可维护性和可扩展性。
我们欢迎社区贡献!如果您想为项目做出贡献,请:
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
- 本工具仅用于方便用户管理自己的邮箱账户,请勿用于非法用途。
- 使用本工具过程中产生的任何数据安全问题、账户安全问题或违反相关服务条款的行为,均由用户自行承担责任。
- 开发者不对使用本工具过程中可能出现的任何损失或风险负责。
- 本工具与Microsoft、Google等邮箱服务提供商没有任何官方关联,使用时请遵守相关服务条款。
- 邮箱账号和密码等敏感信息仅存储在本地SQLite数据库中,请确保服务器安全,防止数据泄露。
- 使用本工具可能会受到邮箱服务提供商的API访问限制或策略变更的影响,如遇访问受限,请遵循相关提供商的政策调整使用方式。
- 本工具不保证100%的兼容性和可用性,可能因第三方服务变更而需要更新。
- 用户在使用过程中应遵守当地法律法规,不得用于侵犯他人隐私或其他非法活动。
- 本软件按"原样"提供,不提供任何形式的保证,无论是明示的还是暗示的。
如果这个项目对您有帮助,请给我们一个 ⭐ Star!
Made with ❤️ by fengyuanluo


