「AI Python 系列」第 01 栏 · AI 时代的 Python 办公自动化
全栏 18 篇 · 零成本跟完 🍃
品牌:梅雅达编程笔记
摘要: 客服邮箱每天几十封邮件,手动分类、逐封回复、还要写日报。本篇用AI自动分类邮件(咨询/投诉/建议/合作/其他)、生成回复草稿、汇总当日邮件日报。内置模拟邮件数据,无需配置邮箱即可跟练。传统做法靠人看人回,AI做法分类+回复+汇总一条龙。
开篇 · 邮件处理的真实痛点
你有没有遇到过这些活:
| 客服分类 | 打开邮件 → 读一遍 → 手动标记类别 | 50封邮件分类1小时 |
| 逐封回复 | 看完邮件 → 想回复内容 → 打字发送 | 相似问题反复写一样的回复 |
| 邮件日报 | 手动统计 → 写汇总 → 发给领导 | 下班前还要花30分钟整理 |
共同特征: 邮件内容是文字,分类和回复全靠人脑理解。这正是 AI 最擅长的事。
今天用 AI 解决邮件处理的三个核心环节——分类、回复、汇总。
一、传统做法 vs AI 时代做法
传统做法:imaplib 收邮件 + 手动处理
import imaplib
import email
# 连接邮箱
mail = imaplib.IMAP4_SSL("imap.exmail.qq.com")
mail.login("service@meiyada.com", "password")
mail.select("inbox")
# 搜索未读邮件
_, data = mail.search(None, "UNSEEN")
for num in data[0].split():
_, msg_data = mail.fetch(num, "(RFC822)")
msg = email.message_from_bytes(msg_data[0][1])
print(msg["Subject"], msg["From"])
能力边界:
- ✅ 连接邮箱、读取邮件、获取标题/正文/附件
- ✅ 标记已读/未读、删除、移动到文件夹
- ❌ 不知道这封邮件属于什么类别
- ❌ 不会写回复内容
- ❌ 不会帮你汇总今天收了多少封、什么类型
AI 时代做法:分类 + 回复 + 日报
# AI 分类邮件
result = client.chat_json("请对以下邮件分类…")
# {"category": "投诉", "priority": "高", "summary": "…"}
# AI 生成回复草稿
reply = client.chat("请根据以下邮件生成回复…")
# AI 生成日报
report = client.chat("请根据今日邮件分类汇总生成日报…")
组合优势:
- AI 负责理解:分类、判断优先级、生成回复、汇总
- imaplib 负责收发:连接邮箱、读取邮件、发送回复(本篇用模拟数据)
- 人工只需审核回复草稿,确认后发送
二、邮件数据结构
本篇用模拟邮件数据,不用配置真实邮箱就能跟练:
MOCK_EMAILS = [
{
"id": 1,
"from": "张客户 <zhang@meiyada.com>",
"subject": "关于产品功能的咨询",
"body": "你好,我想了解你们的智能客服系统是否支持批量导入Excel数据?",
"time": "2026-07-20 09:15"
},
# … 更多邮件
]
实际项目中替换: 把 MOCK_EMAILS 换成 imaplib 读取的真实邮件即可,数据结构一样。
# 实际项目:从邮箱读取
def fetch_emails():
mail = imaplib.IMAP4_SSL("imap.your-mail-server.com")
mail.login("user@example.com", "password")
mail.select("inbox")
_, data = mail.search(None, "UNSEEN")
emails = []
for num in data[0].split():
_, msg_data = mail.fetch(num, "(RFC822)")
msg = email.message_from_bytes(msg_data[0][1])
body = ""
if msg.is_multipart():
for part in msg.walk():
if part.get_content_type() == "text/plain":
body = part.get_payload(decode=True).decode("utf-8", "ignore")
break
else:
body = msg.get_payload(decode=True).decode("utf-8", "ignore")
emails.append({
"id": num.decode(),
"from": msg["From"],
"subject": msg["Subject"],
"body": body,
"time": msg["Date"]
})
return emails
💡 教学用途,商用需合规。 实际使用邮箱 API 时注意遵守服务商的使用条款和频率限制。
三、实战 1:邮件自动分类
场景
8 封邮件,AI 自动分类为:咨询 / 投诉 / 建议 / 合作 / 其他,并判断优先级和一句话摘要。
核心代码
from llm_client import LLMClient
import json
client = LLMClient(provider="glm")
email = {
"from": "李用户 <li@customer.com>",
"subject": "系统登录不了!!很急",
"body": "从昨天下午开始系统就登录不了了,输入账号密码后页面一直空白…"
}
prompt = f"""请对以下邮件进行分类,输出JSON。
发件人:{email['from']}
主题:{email['subject']}
内容:{email['body']}
分类选项:咨询 / 投诉 / 建议 / 合作 / 其他
输出格式:
{{
"category": "…",
"priority": "高/中/低",
"summary": "一句话概括邮件核心内容"
}}"""
result = client.chat_json(prompt, temperature=0.1)
info = json.loads(result)
print(f"分类:{info['category']} | 优先级:{info['priority']}")
print(f"摘要:{info['summary']}")
输出示例:
{
"category": "投诉",
"priority": "高",
"summary": "用户系统无法登录,影响客户演示,要求紧急处理"
}
为什么用 chat_json + temperature=0.1? 分类是确定性任务,不需要创意。JSON 模式保证输出格式稳定,低温度保证分类一致。
四、实战 2:AI 生成回复草稿
场景
AI 根据邮件内容和分类,自动生成一封专业回复。客服人员只需审核修改后发送。
核心代码
client = LLMClient(provider="glm")
prompt = f"""请根据以下邮件内容,生成一封专业的回复邮件正文。
原邮件:
主题:{email['subject']}
内容:{email['body']}
邮件分类:{classification['category']}
优先级:{classification['priority']}
要求:
1. 语气专业友善
2. 针对邮件内容逐一回应
3. 如果是投诉,先道歉再给解决方案
4. 如果是咨询,给出明确回答
5. 100-200字
6. 只输出邮件正文,不要主题行"""
reply = client.chat(prompt, temperature=0.5, max_tokens=300)
为什么 temperature=0.5? 回复邮件需要一定的灵活性和自然感,但不能太天马行空。0.5 是"专业但不机械"的甜区。
为什么 max_tokens=300? 回复 100-200 字,加上标点和换行,300 tokens 足够。限制输出长度也能省 Token。
五、实战 3:邮件摘要日报
场景
一天收了 8 封邮件,全部分类完毕后,AI 生成一份 Markdown 格式的邮件日报,包含统计、重点、处理建议。
核心代码
client = LLMClient(provider="glm")
# 把所有邮件的分类结果拼接
lines = []
for item in classified_emails:
c = item["classification"]
e = item["email"]
lines.append(f"- [{c['category']}] 优先级:{c['priority']} | "
f"{e['subject']} | {c['summary']}")
email_list = "\\n".join(lines)
prompt = f"""请根据以下今日邮件分类汇总,生成一份邮件日报。
今日邮件(共{len(lines)}封):
{email_list}
输出格式:Markdown
包含以下部分:
1. 今日概览(总数、按类别统计)
2. 重点关注(高优先级邮件)
3. 建议处理顺序
4. 待跟进事项"""
report = client.chat(prompt, temperature=0.3, max_tokens=800)
日报输出示例:
# 邮件日报 · 2026-07-20
## 今日概览
– 总计:8封
– 咨询:3封 | 投诉:2封 | 建议:2封 | 合作:1封
– 高优先级:2封 | 中优先级:4封 | 低优先级:2封
## 重点关注
1. 【投诉-高】系统登录不了 – 用户有客户演示,需紧急处理
2. 【投诉-高】客服回复太慢 – 工单未回复,客户考虑更换供应商
## 建议处理顺序
1. 先处理2封高优先级投诉邮件
2. 回复3封咨询邮件(潜在客户)
3. 评估2封功能建议
4. 跟进1封合作邀请
## 待跟进
– 工单 GD-20260716-008 需核查处理状态
– 多语言支持需求需产品团队评估工期
– 50坐席采购需销售跟进报价
完整代码请评论区留言领取
预期输出(截选)
============================================================
邮件 + AI 智能分类与回复
============================================================
📬 收件箱共 8 封邮件
============================================================
实战1:邮件自动分类
============================================================
📧 [1] 关于产品功能的咨询
分类:咨询 | 优先级:中
摘要:用户咨询批量导入Excel和知识库文件格式支持
📧 [2] 系统登录不了!!很急
分类:投诉 | 优先级:高
摘要:用户系统无法登录,影响客户演示,要求紧急处理
📧 [5] 投诉:客服回复太慢
分类:投诉 | 优先级:高
摘要:用户工单未回复,考虑更换供应商
注意: AI 生成的回复草稿需要人工审核后才能发送。AI 可以帮你写 80% 的内容,但最终发出去之前一定要检查一遍。
📊 本篇成本透明栏
| API 调用次数 | 约 11 次(8分类 + 3回复 + 1日报,减去重试) |
| 消耗 Token | 约 15,000 tokens |
| 成本 | ¥0(GLM-4.7-Flash 永久免费) |
| 免费额度是否够 | ✅ 够用 |
| 商用估算 | ¥0(GLM)/ 约¥0.03(DeepSeek)/ 约¥0.05(Qwen) |
| 处理50封邮件预估 | 约 2 分钟,成本 ¥0 |
练手改造题
改造 1(基础): 给分类函数加上"情绪分析"——除了分类和优先级,额外输出 sentiment(正面/中性/负面),帮助客服判断客户情绪。
提示:在 JSON 输出格式中加 "sentiment": "正面/中性/负面" 字段。
改造 2(进阶): 写一个 auto_reply_by_category(email, classification) 函数——根据不同分类使用不同的回复策略:投诉类先道歉给方案,咨询类直接回答,建议类表示感谢并说明会评估。
提示:可以用 if classification['category'] == '投诉': 分支,也可以在 prompt 中让 AI 根据分类自动调整回复策略。
改造 3(挑战): 接入真实邮箱——用 imaplib 读取真实邮件,替换 MOCK_EMAILS。处理完后用 smtplib 发送回复草稿到自己的邮箱(草稿模式,不直接发给客户)。
提示:imaplib.IMAP4_SSL 连接收件箱,smtplib.SMTP_SSL 发送邮件。注意密码用 .env 管理,不要硬编码。
下期预告
Day 11 · 自然语言查数据库(NL2SQL)
邮件处理搞定了,接下来换个方向——数据。用 AI 把自然语言转成 SQL,输入"上个月销售额最高的5个产品"直接出查询结果。不用学 SQL 也能查数据库。
📚 资源与工具(文末合规集中)
- Python imaplib 文档: https://docs.python.org/3/library/imaplib.html
- Python smtplib 文档: https://docs.python.org/3/library/smtplib.html
- Python email 模块文档: https://docs.python.org/3/library/email.html
- 智谱开放平台(GLM,免费 API Key): https://open.bigmodel.cn/
- GLM 模型文档: https://docs.bigmodel.cn/
- 本专栏配套代码: CSDN 下载区(每篇更新)
🍃 作者的话
梅雅达编程笔记,专注 Python + AI 办公自动化实战教程。
邮件 + AI 的核心价值不是"替代客服",而是"给客服装上外脑"——AI 帮你分类、起草、汇总,人负责审核和拍板。这个"AI 做 80%,人做 20%"的模式,后面 Agent 章节会越来越深入。
往期回顾
Day 01 · 为什么 2026 年办公自动化得“AI 化“了
Day 02 · 环境搭建:一套装备打天下
Day 03 · Prompt 工程 5 大心法
Day 04 · LLM API 横评 已被AI编程社区收录
Day 05 · 让 AI 输出结构化数据:告别“偶尔给你一段散文“
Day 06 · Excel + AI:让电子表格变“聪明“
Day 07 · Word + AI:自动生成文档
Day 08 · PDF 智能提取:让 AI 读懂合同、发票、简历
Day 09 · PPT 自动生成:文字大纲变演示文稿
专栏推荐
- 「AI Python 系列」第 01 栏 · AI+办公自动化(连载中)
- 「AI Python 系列」第 02 栏 · AI+数据可视化(连载中)
- 「AI Python 系列」第 03 栏 · Python 爬虫实战(连载中)
资源领取
- 关注作者获取本栏完整代码和数据集
原创声明:本文为梅雅达编程笔记原创作品,未经允许不得转载。
网硕互联帮助中心






评论前必须登录!
注册