智能邮件处理助手
自动分类、摘要、回复邮件,支持自定义规则,与Gmail/Outlook集成。
项目概述
企业客服与运营邮箱每天涌入大量邮件:询价、售后、通知、营销、垃圾邮件混杂在一起。人工逐一处理耗时巨大,且分类标准不统一、回复口径因人而异,漏回和误回都直接影响客户体验。
本案例基于 n8n 工作流编排 + OpenAI 大模型 + Gmail API 搭建了一套智能邮件处理助手:自动抓取新邮件 → LLM 分类与摘要 → 命中自定义规则的邮件用模板自动回复 → 其余进入人工审批队列。业务规则存储在 MongoDB 中,非技术人员也能自助维护。
关键指标
系统架构
系统以 n8n 为编排中枢,串联「邮件接入 → 智能理解 → 规则路由 → 人工兜底」四个环节。Gmail API 负责收发,OpenAI 负责分类/摘要/回复生成,MongoDB 存放规则与模板库。
┌──────────────────────────────────────────────────────┐ │ n8n 工作流编排层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │Gmail API │──▶│ 智能理解 │──▶│ 规则路由引擎 │ │ │ │ 轮询/推送 │ │ 分类+摘要 │ │ 模板命中判定 │ │ │ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │ 邮件解析 │ │ OpenAI │ │ MongoDB │ │ │ │ 去重去广告 │ │ 分类摘要 │ │ 规则+模板库 │ │ │ └──────────┘ └──────────┘ └──────────────┘ │ │ │ │ ┌────────────────────────────────────────────┐ │ │ │ 输出分支: 自动回复(模板) / 人工审批队列(高优) │ │ │ └────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────┘
实现细节
邮件接入与预处理
邮件抓取
n8n 定时触发(每 5 分钟)调用 Gmail API 拉取未读邮件,或通过 Gmail Push 通知实时触发,支持多账号(客服/售后/业务)分别接入。
去重与过滤
按 Message-ID 去重防止重复处理;用发件域黑名单和邮件头特征过滤订阅广告、系统通知等非目标邮件,减少 LLM 调用成本。
正文清洗
解析 HTML 邮件正文为纯文本,剥离签名、免责声明、转发链,截取前 2000 字符作为 LLM 输入,控制 token 消耗。
智能分类与摘要
LLM 分类
通过 n8n HTTP Request 节点调用 OpenAI Chat Completions,输出 JSON:{category, summary, priority}。分类为询价/售后/内部/营销/垃圾五类,优先级分高/中/低。
摘要生成
对长邮件生成 1-2 句摘要(如"客户询问 A 产品批量价格,期望本周内答复"),随邮件一起推送到审批队列,让处理人 3 秒内掌握全文要点。
规则命中
分类结果与 MongoDB 中的业务规则匹配:如"询价 + 含产品型号 → 套用报价模板"。规则支持关键词、分类、发件域多条件组合,运营可在后台自助增删。
自动回复与人工兜底
模板回复
命中规则且优先级低的邮件,用模板 + LLM 填充变量(客户名、产品名、联系方式)自动回复,回复后邮件打标归档并记录到处理日志。
人工审批队列
高优先级(投诉、大客户)或未命中模板的邮件进入待办队列,人工一键采纳 LLM 生成的回复草稿或改写后发送,全程不离开收件箱界面。
效果追踪
每次处理记录分类结果、是否自动回复、人工是否修改了草稿。定期分析"人工修改率"反哺优化模板与规则,形成持续改进闭环。
n8n Function 节点:分类 + 规则路由核心逻辑
// n8n Function Node: 邮件智能分类 + 模板路由 + 人工兜底
const { OpenAI } = require('openai');
const openai = new OpenAI({ apiKey: $env.OPENAI_API_KEY });
const mail = $input.first().json; // { from, subject, body }
// 1. LLM 分类与摘要(结构化输出)
const resp = await openai.chat.completions.create({
model: 'gpt-4o-mini',
messages: [
{ role: 'system', content: '你是邮件助理。将邮件分为 询价/售后/内部/营销/垃圾 五类,输出 JSON: {category, summary, priority},priority 为 high/medium/low' },
{ role: 'user', content: '主题: ' + mail.subject + '\n正文: ' + mail.body.slice(0, 2000) }
],
response_format: { type: 'json_object' }
});
const { category, summary, priority } =
JSON.parse(resp.choices[0].message.content);
// 2. 规则路由:从 MongoDB 规则库中查找匹配模板
const rules = $node['MongoDB 查询规则'].json;
const hit = rules.find(r => r.category === category &&
r.keywords.some(k => mail.body.includes(k)));
// 3. 输出分支:自动回复 / 人工审批
return [{
json: {
category, summary, priority,
from: mail.from, subject: mail.subject,
templateId: hit ? hit.templateId : null,
needsHuman: priority === 'high' || !hit
}
}]; 经验教训
- 分类边界要持续校准 — 营销邮件与通知邮件经常被混淆,用"人工修改率"回灌训练样本比一次性调 prompt 更有效
- Gmail API 有配额与延迟 — 高频轮询会触发 429,建议用 Push 通知 + 指数退避重试,批处理时控制并发
- 自动回复必须留人工后门 — 出现过模板误发事故后,我们规定所有包含价格/承诺的回复一律先进审批队列
- 多语言邮件是隐藏需求 — 海外客户邮件需要摘要与回复都按原语言生成,模型选型时要注意多语言能力