AI PLAY玩法更新持续收录
← 回到更新流

2026-09-19 · 原文发布日

IMAP收件箱自动分类、起草并按规则回复邮件

定时轮询IMAP未读邮件(或由webhook推送),统一成标准结构后依次调用两个外部AI HTTP接口:一个返回严格JSON的分类标签和置信度,一个按指定语气起草回复;路由规则决定直接SMTP同线程回复并记录,还是进人工审核队列、经webhook通知审批人。需自备分类和起草API端点,适合已有模型服务、想改造邮件处理流程的搭建者。

原文要点

该n8n工作流按定时器轮询IMAP未读邮件或由webhook接收JSON邮件,统一为messageId、sender、subject、body、receivedAt结构;先调外部分类HTTP接口返回严格JSON标签与置信度,再调起草接口按指定语气生成回复;路由规则决定经SMTP同线程自动回复并记录数据库,或建人工审核队列项并经webhook通知审批人。配置需IMAP/SMTP凭据、四个外部端点URL,两个入口须只启用一个。

这次做成什么

在n8n里搭一条“收信→AI分类→AI起草→按规则自动回复或转人工”的练习流,用按材料提示词自建的两个本地模拟接口代替真实分类/起草服务,跑通一次webhook入口的完整闭环。

准备什么

  • 已安装可联网的n8n实例(自托管或云版)并拥有创建工作流权限
  • 一个支持IMAP读取与SMTP发送的测试邮箱账号及其应用专用密码
  • 两个可调用的分类与起草HTTP接口(可按材料1、2的提示词自建模拟服务)
  • 用于审核通知的webhook接收地址,可用webhook.site生成测试地址

具体怎么做

  1. 配置凭据与入口二选一

    在n8n的Credentials里新建IMAP凭据(主机、端口993、账号、应用密码)和SMTP凭据(端口465或587、发件地址)。本练习用webhook入口:添加Webhook节点,方法POST,路径如mail-inbound;把模板里的IMAP定时轮询节点停用(右键Disable),避免同一封邮件被处理两次。

  2. 标准化邮件结构

    在Webhook后接Code或Set节点,把输入整理成固定JSON:messageId、sender、subject、body、receivedAt五个字段。缺失字段给空字符串默认值,保证下游接口拿到的结构永远一致。

  3. 调分类接口并校验JSON

    添加HTTP Request节点POST到你的分类端点,body发送subject与body拼接文本。接IF节点检查返回的confidence是否为数字且在0到1之间、category是否非空;不满足则路由到审核队列分支,防止模型输出异常时误发信。

  4. 调起草接口生成回复

    第二个HTTP Request节点把邮件正文、分类标签和语气参数(如professional)发给起草端点,取回draftText字段。可在提示词参数里指定语气和长度上限。

  5. 按规则路由:自动回复或转人工

    用Switch节点:当autoSend为true、confidence≥0.85且category不是complaint时走SMTP节点同线程回复(subject前加Re:,引用原messageId);否则创建审核记录并向审批人webhook(如webhook.site测试地址)POST通知,同时向记录端点写入pending_review状态。

可直接复制的材料

邮件分类接口提示词(部署在自己的模型服务上)

本站独立编写的分类提示词,部署在你自己的分类API里;{{subject}}和{{body}}由服务侧替换

你是邮件分类器。只输出一个JSON对象,不要输出任何其他文字或markdown代码块。
可选类别:support(售后咨询)、sales(商务合作)、complaint(投诉)、spam(垃圾邮件)、other(其他)。
输出格式:{"category":"类别","confidence":0到1的小数,"reason":"不超过30字的中文理由"}
规则:涉及退款、故障、无法使用归为support;明确表达愤怒或要求赔偿归为complaint;广告推广归为spam。
邮件主题:{{subject}}
邮件正文:{{body}}

回复起草接口提示词

本站示例提示词,{{tone}}等占位符由起草服务替换;真实发送前建议人工抽查

你是客服邮件起草助手。根据邮件正文和分类结果写一封中文回复草稿。
要求:语气{{tone}};不超过200字;不要承诺具体退款金额或处理时限;结尾署名"客服团队"。
只输出JSON:{"draftText":"回复正文"}
邮件分类:{{category}}
邮件正文:{{body}}

webhook测试邮件JSON

本站虚构测试数据,直接POST到n8n的webhook测试URL即可触发练习流

{"messageId":"msg-20261001-001","sender":"lihua@example-shop.cn","subject":"订单W8823发货一周仍未收到","body":"你好,我9月22日下单的订单W8823至今没有物流更新,请帮忙查一下进度,谢谢。","receivedAt":"2026-10-01T09:30:00+08:00"}

输入与输出示例

本站虚构演示,两个接口返回值来自本站模拟服务设定,非原作者运行结果

输入

向webhook地址POST:{"messageId":"msg-20261001-001","sender":"lihua@example-shop.cn","subject":"订单W8823发货一周仍未收到","body":"下单一周没有物流更新,请查一下进度。","receivedAt":"2026-10-01T09:30:00+08:00"}

对应输出

分类接口返回{"category":"support","confidence":0.91,"reason":"询问订单物流进度"};起草接口返回{"draftText":"您好,非常抱歉让您久等。我们已为您加急核查订单W8823的物流状态,会尽快通过邮件同步最新进展。客服团队"};因confidence 0.91≥0.85且category为support,走SMTP自动回复分支,日志端点写入status=sent。

做完检查这些

  • webhook只启用一个入口,IMAP轮询节点处于停用状态,同一邮件不会被处理两次
  • 分类接口返回非JSON或confidence越界时,邮件进入审核队列而不是自动发送
  • confidence达标且类别允许时,SMTP节点发出的邮件主题带Re:前缀且发件地址正确
  • 审核分支触发时,审批人webhook地址能收到含sender和subject的通知JSON

容易卡住的地方

  • 定时轮询和webhook两个入口同时启用会导致同一邮件被重复分类和回复
  • IMAP凭据用普通登录密码常失败,多数邮箱需要单独生成应用专用密码
  • 分类模型未强制JSON输出时下游解析报错,必须在接口侧做格式校验兜底
  • autoSend直接设为true上线风险高,应先以人工审核模式运行观察分类准确率

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Triage inbound email with IMAP, custom AI HTTP APIs and SMTP
原作者
Ck Lu
原始发布日期
2026-09-19T10:16:18.118Z
来源
https://n8n.io/workflows/19734