发送电子邮件至WhatsApp优先警报SaaS
一个全栈SaaS应用程序,使用人工智能对收到的电子邮件进行优先级排序,并直接向WhatsApp发送高优先级警报。
特性
后端(FastAPI+PostgreSQL)
- 用户认证:电子邮件/密码+OAuth(谷歌/微软)
- 电子邮件帐户管理:
- Gmail OAuth集成 - Outlook OAuth集成 - IMAP/POP3支持(通用服务器、雅虎、Zoho、cPanel) - 加密凭证存储 - SSL/TLS支持
- 后台电子邮件轮询:异步调度程序每1-5分钟检查一次电子邮件
- 人工智能驱动的优先级:Claude API集成,用于电子邮件评分(0-100)
- VIP发件人检测 - 关键字分析(紧急、付款、发票、截止日期等) - 情绪与紧迫性分析 - 动作项提取
- Infobip WhatsApp集成:通过WhatsApp发送格式化警报
- 用户规则和自定义:
- VIP联系人列表 - 关键字筛选器(允许/阻止) - 文件夹选择 - 工作时间配置 - 优先级阈值滑块
- 消息历史记录:具有过滤器和分页功能的完整可搜索历史记录
- 订阅和计费:分层系统(免费、专业版、高级版、团队版)
前端(React+TypeScript+顺风CSS)
- 着陆页:功能概述和定价
- 认证:注册、登录、OAuth按钮
- 仪表盘:统计数据和快速操作概述
- 电子邮件帐户:连接和管理电子邮件帐户
- WhatsApp设置:配置Infobip集成
- 规则:自定义VIP联系人、关键字、工作时间
- 消息:使用筛选器查看历史记录
- 计费:管理订阅
技术栈
后端
- 框架:FastAPI
- 数据库:带有SQLAlchemy ORM的PostgreSQL
- 认证:JWT代币
- 电子邮件:IMAPClient、Google API、Microsoft Graph
- 人工智能:API
- WhatsApp:Infobip SDK
- 调度:APScheduler
- 加密:密码学(Fernet)
前端
- 框架:React 18与TypeScript
- 生成工具:快
- 路由:React路由器v6
- 样式:顺风CSS
- 状态管理:React查询
- HTTP客户端:Axios
- 通知:反应烤面包
快速开始
先决条件
- Docker&Docker编写
- API密钥
- Infobip API密钥(WhatsApp可选)
- Google/Microsoft OAuth凭据(可选)
安装
- 克隆存储库:
git clone
cd MCP-Gmail-AI-Butler- 复制环境文件:
cp .env.example .env- 编辑
.env并添加您的API密钥:
CLAUDE_API_KEY=your-claude-api-key-here
INFOBIP_API_KEY=your-infobip-api-key-here
SECRET_KEY=your-secret-key-change-this
ENCRYPTION_KEY=your-32-byte-encryption-key!!- 启动服务:
docker-compose up -d- 访问应用程序:
- 前端:http://localhost:3000
- 后端API:http://localhost:8000
- API文件:http://localhost:8000/docs
手动安装(无Docker)
后端设置
- 创建虚拟环境:
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt- 创建PostgreSQL数据库:
createdb email_whatsapp_saas- 设置环境变量:
export DATABASE_URL=postgresql://postgres:postgres@localhost:5432/email_whatsapp_saas
export CLAUDE_API_KEY=your-key
# ... other variables from .env.example- 运行服务器:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000前端设置
- 安装依赖项:
cd frontend
npm install- 创建
.env:
VITE_API_URL=http://localhost:8000- 启动开发服务器:
npm run dev项目结构
MCP-Gmail-AI-Butler/
├── backend/
│ ├── app/
│ │ ├── api/ # API routes
│ │ │ ├── auth.py
│ │ │ ├── email_accounts.py
│ │ │ ├── whatsapp.py
│ │ │ ├── rules.py
│ │ │ ├── messages.py
│ │ │ ├── subscriptions.py
│ │ │ └── dashboard.py
│ │ ├── core/ # Core configuration
│ │ │ ├── config.py
│ │ │ ├── database.py
│ │ │ └── security.py
│ │ ├── models/ # SQLAlchemy models
│ │ ├── schemas/ # Pydantic schemas
│ │ ├── services/ # Business logic
│ │ │ ├── claude_service.py
│ │ │ ├── infobip_service.py
│ │ │ ├── email_service.py
│ │ │ └── scheduler.py
│ │ ├── utils/ # Utilities
│ │ └── main.py # FastAPI app
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ ├── contexts/ # React contexts
│ │ ├── App.tsx
│ │ └── main.tsx
│ ├── package.json
│ ├── vite.config.ts
│ ├── tailwind.config.js
│ └── Dockerfile
├── docker-compose.yml
├── .env.example
└── README.mdAPI终点
认证
POST /api/v1/auth/register-注册新用户POST /api/v1/auth/login-登录POST /api/v1/auth/oauth/google-谷歌OAuthPOST /api/v1/auth/oauth/microsoft-微软OAuthGET /api/v1/auth/me-获取当前用户
电子邮件帐户
GET /api/v1/email-accounts-列出帐户POST /api/v1/email-accounts-创建帐户GET /api/v1/email-accounts/{id}-获取帐户PATCH /api/v1/email-accounts/{id}-更新帐户DELETE /api/v1/email-accounts/{id}-删除帐户POST /api/v1/email-accounts/{id}/test-测试连接
GET /api/v1/whatsapp-列出WhatsApp帐户POST /api/v1/whatsapp-创建WhatsApp帐户POST /api/v1/whatsapp/{id}/test-测试WhatsApp连接DELETE /api/v1/whatsapp/{id}-删除WhatsApp帐户
规则
GET /api/v1/rules-列出规则POST /api/v1/rules-创建规则PATCH /api/v1/rules/{id}-更新规则POST /api/v1/rules/{id}/vip-contacts-添加VIP联系人DELETE /api/v1/rules/{id}/vip-contacts/{contact_id}-删除VIP联系人POST /api/v1/rules/{id}/keywords-添加关键字DELETE /api/v1/rules/{id}/keywords/{keyword_id}-删除关键字
消息
GET /api/v1/messages-列出邮件(带过滤器和分页)GET /api/v1/messages/{id}-获取消息详细信息POST /api/v1/messages/test-测试电子邮件优先级评分DELETE /api/v1/messages/{id}-删除邮件
订阅
GET /api/v1/subscriptions-获取订阅GET /api/v1/subscriptions/usage-获取使用统计数据POST /api/v1/subscriptions/upgrade-升级计划
仪表盘
GET /api/v1/dashboard/stats-获取仪表板统计信息
配置
电子邮件提供商
Gmail
- 在Google云控制台中启用Gmail API
- 创建OAuth 2.0凭据
- 将凭据添加到
.env
展望
- 在Azure AD中注册应用程序
- 配置Microsoft Graph权限
- 将凭据添加到
.env
IMAP/POP3
支持任何使用IMAP/POP3的电子邮件提供商:
- 服务器主机和端口
- 用户名和密码
- SSL/TLS选项
API克劳德
从获取API密钥https://console.anthropic.com/
Infobip WhatsApp
- 注册地址:https://www.infobip.com/
- 获取API密钥和发件人ID
- 在中配置
.env
订阅级别
| 功能 | 免费 | 专业版(9美元) | 高级版(29美元) | 团队版(99美元) | |
|---|---|---|---|---|---|
| 电子邮件帐户 | 1 | 3 | 10 | 50 | |
| 电子邮件/月 | 50 | 500 | 2000 | 10000 | |
| WhatsApp号码 | 1 | 2 | 5 | 20 | |
| AI优先级 | ✓ | ✓ | ✓ | ✓ | |
| 自定义规则 | - | ✓ | ✓ | ✓ | |
| 优先支持 | - | - | ✓ | ✓ | |
| API访问 | - | - | ✓ |
发展
运行测试
cd backend
pytest数据库迁移
cd backend
alembic revision --autogenerate -m "Description"
alembic upgrade head生产大楼
后端
cd backend
docker build -t email-whatsapp-backend .前端
cd frontend
npm run build安全
- 使用bcrypt散列的密码
- 用于身份验证的JWT令牌
- 使用Fernet加密的电子邮件凭据
- API密钥在静止时加密
- HTTPS建议用于生产
- CORS已配置
许可证
麻省理工学院
支持
有关问题和疑问,请打开GitHub问题。
