使用 OpenClaw 进行电子邮件分类和响应自动化
知识工作者平均每天花费 2.6 小时管理电子邮件。对于面向客户的团队、销售开发代表和行政助理来说,这个数字更高,而且其中很大一部分时间花在有能力的系统可以处理的任务上:按紧急程度对电子邮件进行排序、将查询路由给合适的人、回答常见问题、安排会议请求以及跟进未完成的线程。这些任务需要理解,但不需要创造力。它们正是 OpenClaw 代理的构建任务。
OpenClaw 电子邮件自动化超越了基于关键字的规则。电子邮件分类代理以熟练的人类助理的方式阅读每封电子邮件:了解上下文、推断意图、识别发件人与您的业务的关系,以及做出智能路由和响应决策。本指南涵盖了企业部署的完整电子邮件自动化架构。
要点
- OpenClaw 的电子邮件分类代理可在两秒内按类型(查询、投诉、发票、会议请求、垃圾邮件、内部通知)和优先级对电子邮件进行分类。
- 代理起草重复查询的回复,自动发送或根据您的政策将其发送给人工批准。
- 端到端处理会议安排请求:代理检查日历可用性、建议时间、确认预订并发送邀请。
- 代理维护线程上下文 - 同一线程中的后续电子邮件在了解对话历史记录的情况下进行处理。
- 情绪升级检测会立即将苦恼或愤怒的发件人转给人工处理人员,无论主题如何。
- 敏感电子邮件类别(法律声明、监管信函、企业帐户投诉)会被标记,并且不会自动回复。
- 与 Gmail、Outlook (Microsoft 365) 和任何 IMAP/SMTP 兼容的电子邮件系统集成。
- ECOSIRE 为执行团队、客户服务部门和销售开发运营构建 OpenClaw 电子邮件自动化。
架构:电子邮件自动化堆栈
电子邮件自动化管道由四个按顺序工作的代理组成:
Inbound Email
↓
[ Triage Agent ] — classify type, priority, sender relationship, intent
↓
[ Response Agent ] — draft appropriate response or action
↓
[ Review Gate ] — auto-send, human-approve, or escalate
↓
[ Follow-up Agent ] — track replies, manage open threads, send reminders
审核门可按电子邮件类别进行配置。对于内部通知,代理可以立即采取行动。对于客户询问,草稿将作为建议回复发送到收件箱,供人工发送。对于垃圾邮件和营销邮件,代理会自动存档。对于敏感类别,代理会标记但不响应。
电子邮件集成:连接到您的邮箱
OpenClaw 通过标准协议和 OAuth 连接到电子邮件。 Gmail 的推荐架构:
export const GmailTool = defineTool({
name: "email",
type: "google-gmail",
auth: {
type: "oauth2",
clientId: "${GOOGLE_CLIENT_ID}",
clientSecret: "${GOOGLE_CLIENT_SECRET}",
refreshToken: "${GMAIL_REFRESH_TOKEN}", // Stored in Vault
scopes: [
"https://www.googleapis.com/auth/gmail.readonly",
"https://www.googleapis.com/auth/gmail.send",
"https://www.googleapis.com/auth/gmail.modify",
],
},
polling: {
intervalMs: 30_000, // Check every 30 seconds
maxResults: 50,
labelFilter: ["INBOX", "UNREAD"],
},
});
对于 Microsoft 365,该工具使用具有类似 OAuth 配置的 Microsoft Graph API。对于其他电子邮件系统,IMAP 工具提供兼容性:
export const ImapTool = defineTool({
name: "email",
type: "imap",
config: {
host: "${IMAP_HOST}",
port: 993,
tls: true,
auth: { user: "${EMAIL_ADDRESS}", pass: "${EMAIL_PASSWORD}" },
smtpHost: "${SMTP_HOST}",
smtpPort: 587,
},
});
电子邮件轮询按可配置的时间间隔运行。对于大容量收件箱(每天 1,000 多封电子邮件),通过 Gmail 的 Pub/Sub 集成或 Outlook 的 Webhook 订阅的推送通知模型可提供实时处理,而无需轮询开销。
分类代理:了解每封电子邮件
分类代理按照四个维度对每封传入电子邮件进行分类:
类型:这封电子邮件属于什么类别?常见类型包括:客户查询、销售机会、供应商沟通、发票/账单、会议请求、投诉、法律通知、内部通知、营销/促销、垃圾邮件、时事通讯。
优先级:需要关注的紧急程度如何?优先级由发件人关系(企业帐户与未知联系人)、类型(法律通知始终为高优先级)、情绪(愤怒或苦恼信号高优先级)和明确的时间参考(“我需要在周五之前收到”)决定。
意图:发件人想要什么?安排通话、获取问题答案、请求退款、提交投诉、确认会议、批准文件。
发件人关系:此发件人是客户吗(如果是,是什么级别)?供应商?销售渠道中的潜在客户?内部同事?第一次接触?发件人的电子邮件域与您的 CRM 和 ERP 相匹配,以丰富分类上下文。
export const TriageEmail = defineSkill({
name: "triage-email",
tools: ["email", "crm", "llm"],
async run({ input, tools }) {
const email = await tools.email.getMessage(input.messageId);
// Enrich sender context
const senderContext = await tools.crm.findByEmail(email.from.address);
// Classify with LLM
const classification = await tools.llm.classify({
prompt: buildTriagePrompt(email, senderContext),
schema: {
type: z.enum(["customer-inquiry", "sales-opportunity", "complaint", "invoice",
"meeting-request", "legal-notice", "internal", "spam", "other"]),
priority: z.enum(["urgent", "high", "normal", "low"]),
intent: z.string().max(100),
requiresHuman: z.boolean(),
requiresHumanReason: z.string().optional(),
sentiment: z.enum(["positive", "neutral", "negative", "distressed"]),
},
});
// Emotional escalation — always to human
if (classification.sentiment === "distressed" || classification.type === "legal-notice") {
return {
...classification,
requiresHuman: true,
requiresHumanReason: classification.sentiment === "distressed" ? "Distressed sender" : "Legal notice",
autoAction: "FLAG_FOR_HUMAN",
};
}
return { ...classification, senderContext };
},
});
回复代理:起草上下文准确的回复
对于符合自动回复条件的电子邮件(客户有关订单状态、常见问题解答、安排请求的询问),回复代理会以组织的通信方式起草回复。
响应质量取决于代理可以获得的知识。响应代理查询:
- 事实答案的知识库(产品规格、定价、政策)
- 客户特定信息的 CRM(账户状态、未结订单、之前的交互)
- 安排时可用的日历
- ERP 中的订单和发票详细信息
export const DraftEmailResponse = defineSkill({
name: "draft-email-response",
tools: ["email", "crm", "knowledge-base", "erp", "calendar", "llm"],
async run({ input, tools }) {
const { email, classification, senderContext } = input;
let contextData: Record<string, any> = {};
// Gather relevant context based on email type
if (classification.type === "customer-inquiry" && senderContext?.customerId) {
contextData.recentOrders = await tools.erp.getRecentOrders(senderContext.customerId, { limit: 3 });
contextData.openTickets = await tools.crm.getOpenTickets(senderContext.customerId);
}
if (classification.intent.includes("schedule") || classification.type === "meeting-request") {
contextData.availability = await tools.calendar.getFreeSlots({ days: 7, duration: 30 });
}
// Query knowledge base for relevant answers
const knowledgeResults = await tools.knowledgeBase.search(email.body, { topK: 3 });
contextData.knowledgeAnswers = knowledgeResults;
// Generate draft
const draft = await tools.llm.generate({
prompt: buildResponsePrompt(email, classification, senderContext, contextData),
systemPrompt: loadBrandVoiceGuide(), // Tone, style, sign-off format
maxTokens: 500,
temperature: 0.3,
});
return {
draft,
contextUsed: Object.keys(contextData),
confidence: knowledgeResults[0]?.confidence ?? 0.5,
};
},
});
品牌声音一致性:生成响应的系统提示包括您组织的沟通风格指南:正式级别、首选结束语、如何称呼客户(直呼名字或正式)以及要使用或避免的特定短语。这可以确保代理起草的回复在风格上与您团队的写作(如果不是作者身份)没有区别。
会议安排:消除来回的日历
会议安排电子邮件数量大、创意性低——它们遵循座席可以出色处理的可预测模式。当分类代理识别出会议请求时,安排响应流程将激活。
export const HandleMeetingRequest = defineSkill({
name: "handle-meeting-request",
tools: ["calendar", "email"],
async run({ input, tools }) {
const { email, requestedDuration } = input;
// Find available slots
const slots = await tools.calendar.getFreeSlots({
duration: requestedDuration ?? 30,
days: 7,
businessHoursOnly: true,
timezone: inferTimezone(email),
});
if (slots.length === 0) {
return {
action: "DRAFT_RESPONSE",
message: "No available slots in the next 7 days — response template: suggest extending the window",
requiresHuman: true,
};
}
const topSlots = slots.slice(0, 3);
// Create a scheduling page link (or include times directly in the email)
const schedulingLink = await tools.calendar.createSchedulingPage({
slots: topSlots,
title: `Meeting with ${input.hostName}`,
duration: requestedDuration ?? 30,
confirmationEmailTemplate: "meeting-confirmed",
});
const draft = buildSchedulingResponse(email, topSlots, schedulingLink, input.hostName);
return { action: "DRAFT_READY", draft, schedulingLink };
},
});
当收件人单击计划链接中的某个位置时,Webhook 会触发预订日历事件的确认技能,向所有各方发送日历邀请,并通过确认关闭电子邮件线程。
线程上下文管理
电子邮件对话跨越多条消息。后续电子邮件仅在前一个线程的上下文中才有意义。线程管理器维护每个打开线程的语义摘要,该摘要随着新消息的到达而更新。
export const UpdateThreadContext = defineSkill({
name: "update-thread-context",
tools: ["email"],
async run({ input, tools, memory }) {
const threadKey = `thread:${input.threadId}`;
const existingContext = await memory.episode.get(threadKey);
const newMessages = await tools.email.getThreadMessages(input.threadId, {
since: existingContext?.lastMessageId ?? null,
});
const updatedSummary = await summarizeThread([
...(existingContext?.messages ?? []),
...newMessages,
]);
await memory.episode.set(threadKey, {
threadId: input.threadId,
summary: updatedSummary,
lastMessageId: newMessages[newMessages.length - 1]?.id,
openItems: extractOpenItems(updatedSummary),
lastUpdated: new Date().toISOString(),
});
return { summary: updatedSummary };
},
});
当新消息到达线程时,分类和响应代理会接收线程摘要作为上下文,因此它们可以了解完整的对话历史记录,而无需重新读取每条消息。
后续跟踪:没有任何遗漏
后续代理监视组织发送消息但尚未收到回复的打开线程。经过一段可配置的时间(通常为 3 个工作日用于客户外展,1 天用于时间敏感的销售跟进)后,它会起草一封后续电子邮件并将其路由到适当的审核门。
export const TrackOpenThreads = defineSkill({
name: "track-open-threads",
tools: ["email"],
async run({ input, tools, memory }) {
const sentEmails = await tools.email.getSentMessages({
since: hoursAgo(24 * 7), // Last week's sent emails
excludeInternalDomains: true,
});
const waitingForReply = [];
for (const sent of sentEmails) {
const thread = await tools.email.getThread(sent.threadId);
const lastMessage = thread.messages[thread.messages.length - 1];
const weWroteLastMessage = lastMessage.from.address === input.ourEmailAddress;
if (weWroteLastMessage) {
const daysSinceSent = daysSince(lastMessage.date);
if (daysSinceSent >= input.followUpAfterDays) {
waitingForReply.push({ threadId: sent.threadId, daysSinceSent, subject: sent.subject });
}
}
}
return { waitingForReply, count: waitingForReply.length };
},
});
敏感电子邮件处理:代理从不自动回复的内容
某些电子邮件类别永远不应收到自动回复。分类代理会立即标记这些内容以供人工处理:
- 法律声明、停止函、监管信函
- 超过收入门槛的企业账户的投诉
- 提及媒体、报刊或新闻业的电子邮件
- 带有建议法律文件的附件类型的电子邮件(具有听起来合法的文件名模式的 PDF)
- 网络钓鱼或社会工程尝试(标记并隔离,不回应)
- 分类置信度非常低的电子邮件(代理不确定电子邮件的内容)
标记系统添加标签并在团队的工作流程系统中创建任务 - 电子邮件永远不会丢失,只是路由到人手中。
常见问题
代理如何在响应中保持人类作者身份的外观?
响应代理根据发送者的通信风格进行配置:首选短语、签字格式、典型响应长度和正式级别。草稿就是以这种风格生成的。对于在发送前审查回复的团队,如果需要,人员会编辑草稿并自行发送——电子邮件来自他们的地址,没有任何人工智能协助的迹象。对于完全自动化的响应(常见问题解答、订单状态),组织可以选择在电子邮件页脚中公开自动化。
当客服人员对如何回应没有信心时会发生什么?
每个电子邮件类别的置信阈值都是可配置的。当代理对其分类或建议响应的置信度低于阈值时,它会通过建议的操作而不是自动响应路由到人工审核队列。人员可以一键批准建议、修改建议或手动处理。通过学习反馈循环,每个获得批准的建议都会提高客服人员未来对类似电子邮件的信心。
代理可以处理多种语言的电子邮件吗?
是的。语言检测是分类流程的第一步。如果知识库包含该语言的内容,代理可以使用与传入电子邮件相同的语言起草回复。对于知识库仅为英语的语言,代理会将其响应草稿翻译为发件人的语言。对于基础法学硕士具有广泛培训覆盖范围的语言(西班牙语、法语、德语、中文、日语、葡萄牙语、阿拉伯语),非英语语言的响应质量最高。
后续跟踪器如何避免过于激进地发送提醒?
后续代理在发送提醒之前检查收件人的参与信号。如果收件人已打开上一封电子邮件(通过已读回执进行跟踪,如果有的话)但没有回复,则后续行动会比较温和,并假设他们正在考虑。如果没有开盘信号,后续就更直接了。该代理还尊重选择退出信号:如果之前的后续跟进生成了要求不要联系的回复,则该线程将被标记为关闭,并且不会发送进一步的后续跟进。
是否有对电子邮件执行的所有自动操作的审核跟踪?
是的。每个自动化操作(分类分类、草稿生成、自动发送、标签应用、存档)都会记录时间戳、代理的分类理由和电子邮件的消息 ID。管理员可以访问审核日志,并且可以导出审核日志以进行合规性审查。对于有电子邮件归档要求的组织,OpenClaw 的操作不会干扰您现有的电子邮件归档解决方案。
后续步骤
对于大多数专业团队来说,电子邮件是一个大容量、低创造力的瓶颈。 OpenClaw 电子邮件自动化处理排序、路由和重复响应,因此您的团队专注于需要人类判断、建立关系和创造力的对话。
ECOSIRE 的 OpenClaw 服务 包括为客户服务团队、行政助理、销售开发运营和供应商管理功能实施电子邮件自动化。我们的团队配置分类规则、知识库、品牌声音指南和审查门,以符合您组织的沟通标准。
联系 ECOSIRE 讨论您的电子邮件自动化要求并接收实施估算。
作者
ECOSIRE Research and Development Team
在 ECOSIRE 构建企业级数字产品。分享关于 Odoo 集成、电商自动化和 AI 驱动商业解决方案的洞见。
相关文章
AI-Powered Accounting Automation: What Works in 2026
Discover which AI accounting automation tools deliver real ROI in 2026, from bank reconciliation to predictive cash flow, with implementation strategies.
Payroll Processing: Setup, Compliance, and Automation
Complete payroll processing guide covering employee classification, federal and state withholding, payroll taxes, garnishments, automation platforms, and year-end W-2 compliance.
AI Agents for Business Automation: The 2026 Landscape
Explore how AI agents are transforming business automation in 2026, from multi-agent orchestration to practical deployment strategies for enterprise teams.