Skip to main content
Glama
leeguooooo
by leeguooooo
EMAIL_TRANSLATE_WORKFLOW_GUIDE.md7.18 kB
# 📧 邮件翻译总结工作流指南 ## 🎯 功能说明 这个工作流实现了你的需求: 1. **定时获取未读邮件** - 每 10 分钟执行一次 2. **智能翻译** - 非中文邮件自动翻译成中文 3. **生成摘要** - 使用 OpenAI 生成中文摘要 4. **发送飞书通知** - 推送到飞书群 5. **标记已读** - 自动标记为已读 ## 🔄 工作流程 ``` 定时触发 (每10分钟) ↓ 调用 /api/translate-unread ├─ 获取未读邮件 ├─ 检测语言 ├─ 非中文 → OpenAI 翻译 └─ 生成中文摘要 ↓ 检查是否有邮件? ├─ 有 → 发送飞书通知 │ ↓ │ 标记已读 │ ↓ │ 完成 └─ 无 → 跳过 ``` ## 📝 API 端点 ### 1. `/api/translate-unread` - 翻译未读邮件 **请求**: ```bash POST /api/translate-unread Headers: X-API-Key: your-api-key ``` **响应**: ```json { "success": true, "message": "翻译总结完成", "count": 3, "summary": "📧 共 3 封未读邮件\n\n1. 欢迎使用...", "emails": [ { "id": "123", "from": "test@example.com", "subject": "Welcome", "subject_zh": "欢迎", "summary_zh": "这是一封欢迎邮件...", "is_chinese": false } ], "email_ids": ["123", "456", "789"], "lark_message": { "msg_type": "text", "content": { "text": "📬 未读邮件摘要\n\n..." } } } ``` ### 2. `/api/mark-read` - 标记已读 **请求**: ```bash POST /api/mark-read Headers: X-API-Key: your-api-key Content-Type: application/json ["email-id-1", "email-id-2", "email-id-3"] ``` **响应**: ```json { "success": true, "message": "成功标记 3 封邮件为已读", "marked_count": 3, "email_ids": ["email-id-1", "email-id-2", "email-id-3"] } ``` ## 🚀 部署步骤 ### 1. 设置环境变量 在 `.env` 文件中添加: ```bash # OpenAI API Key (必需 - 用于翻译) OPENAI_API_KEY=sk-your-openai-key # API 安全 API_SECRET_KEY=$(openssl rand -hex 32) EMAIL_API_URL=https://your-domain.com ``` ### 2. 在 n8n 中设置环境变量 访问 https://n8n.ifoodme.com/settings/environments 添加: - `EMAIL_API_URL` = `https://your-domain.com` - `EMAIL_API_KEY` = `your-api-secret-key` - `FEISHU_WEBHOOK` = `https://open.larksuite.com/open-apis/bot/v2/hook/xxx` ### 3. 部署工作流 ```bash # 方法 1: 使用脚本 uv run python -c " import json, sys sys.path.insert(0, '.') from scripts.setup_n8n_workflow import N8NWorkflowManager import os manager = N8NWorkflowManager( os.getenv('N8N_URL', 'https://n8n.ifoodme.com'), os.getenv('N8N_API_KEY') ) with open('n8n/email_translate_workflow.json') as f: workflow = json.load(f) result = manager.create_workflow(workflow) print(f'✅ 工作流已创建: {result[\"id\"]}') print(f'URL: https://n8n.ifoodme.com/workflow/{result[\"id\"]}') " # 方法 2: 手动导入 # 在 n8n 中导入 n8n/email_translate_workflow.json ``` ### 4. 启动 API 服务 ```bash # 确保设置了环境变量 export OPENAI_API_KEY="sk-your-key" export API_SECRET_KEY="your-secret" # 启动服务 uv run uvicorn scripts.email_monitor_api:app --port 18888 ``` ### 5. 测试 ```bash # 测试翻译 API curl -X POST https://your-domain.com/api/translate-unread \ -H "X-API-Key: your-secret-key" # 在 n8n 中测试工作流 # 点击 "Execute Workflow" ``` ### 6. 激活工作流 在 n8n 中点击右上角的开关激活工作流。 ## 📊 工作流配置 ### 定时频率 默认每 10 分钟运行一次,可以修改 cron 表达式: ```json { "cronExpression": "*/10 * * * *" // 每10分钟 } ``` 常用配置: - `*/5 * * * *` - 每 5 分钟 - `*/15 * * * *` - 每 15 分钟 - `0 * * * *` - 每小时 - `0 9-18 * * *` - 工作时间(9-18点)每小时 ### 邮件数量限制 在 API 中默认获取最多 20 封未读邮件。 如需修改,编辑 `scripts/email_monitor_api.py`: ```python fetch_result = await asyncio.to_thread( call_email_tool, "list_emails", json.dumps({"unread_only": True, "limit": 50}) # 改为 50 ) ``` ## 🎨 飞书消息格式 生成的飞书消息格式: ``` 📬 未读邮件摘要 📧 共 3 封未读邮件 1. 欢迎使用我们的服务 发件人: service@example.com 摘要: 这是一封欢迎邮件,介绍了服务的主要功能... 2. 会议提醒 发件人: calendar@company.com 摘要: 明天下午2点有重要会议... 3. 账单通知 发件人: billing@provider.com 摘要: 您的本月账单已生成,金额为... ``` ## 💰 成本估算 ### OpenAI API 使用量 | 邮件数/次 | Tokens/次 | 成本/次 | 运行频率 | 月成本 | |-----------|----------|---------|----------|--------| | 5 封 | 1K-2K | $0.002-0.004 | 每10分钟 | $8-17 | | 10 封 | 2K-4K | $0.004-0.008 | 每10分钟 | $17-34 | | 20 封 | 4K-8K | $0.008-0.016 | 每10分钟 | $34-69 | **优化建议**: 1. 调整运行频率为每 15-30 分钟 2. 限制邮件数量为 10 封 3. 只在工作时间运行 ### 优化后成本(推荐) - 每 15 分钟 + 10 封邮件 + 工作时间 = **约 $10-15/月** ## 🔧 自定义配置 ### 1. 修改翻译提示词 编辑 `scripts/email_translator.py`: ```python prompt = f"""请将以下邮件翻译成中文,并提供简短摘要(不超过100字): 发件人: {from_addr} 主题: {subject} 内容: {body} 要求: - 翻译要准确、自然 - 摘要要抓住重点 - 突出重要信息(会议时间、截止日期等) 请以 JSON 格式返回: {{ "subject_zh": "中文主题", "summary_zh": "中文摘要" }}""" ``` ### 2. 添加智能分类 可以让 OpenAI 同时进行分类: ```python {{ "subject_zh": "中文主题", "summary_zh": "中文摘要", "category": "work/personal/urgent/spam", # 添加分类 "priority": 1-5 # 添加优先级 }} ``` ### 3. 富文本通知 修改为飞书 Card 格式: ```json { "msg_type": "interactive", "card": { "header": { "title": { "content": "📬 未读邮件摘要", "tag": "plain_text" } }, "elements": [ { "tag": "div", "text": { "content": "summary content", "tag": "lark_md" } } ] } } ``` ## 🐛 故障排除 ### 翻译失败 **问题**: `OPENAI_API_KEY 未设置` **解决**: ```bash export OPENAI_API_KEY="sk-your-key" # 重启 API 服务 ``` ### 标记已读失败 **问题**: `email_ids` 格式错误 **解决**: 检查 n8n 中的数据传递,确保是数组格式: ```json {{ $json.email_ids }} // 正确 {{ JSON.stringify($json.email_ids) }} // 错误 ``` ### 飞书通知未收到 **问题**: Webhook URL 错误 **解决**: 1. 检查 n8n 环境变量 `FEISHU_WEBHOOK` 2. 测试 Webhook: `curl -X POST $FEISHU_WEBHOOK -d '{"msg_type":"text","content":{"text":"test"}}'` ## 📚 相关文档 - [SECURITY_SETUP_GUIDE.md](SECURITY_SETUP_GUIDE.md) - 安全配置 - [HTTP_API_QUICK_START.md](HTTP_API_QUICK_START.md) - API 快速开始 - [COST_OPTIMIZATION_GUIDE.md](COST_OPTIMIZATION_GUIDE.md) - 成本优化 --- **现在你有一个完整的邮件翻译和总结系统了!** 🎉

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/leeguooooo/email-mcp-service'

If you have feedback or need assistance with the MCP directory API, please join our Discord server