ChatGPT邮件回复生成:从零搭建自动回复流程
ChatGPT 邮件回复生成的核心思路是:把邮件正文交给 OpenAI 的对话接口,拿到模型返回的文本,再通过邮件协议发送出去。
下面按零基础也能照做的顺序,拆成环境准备、脚本编写、避坑和验证四块。
开始前需要准备什么
这套流程依赖三个东西:一个能调用 OpenAI 接口的 API Key、一台能运行 Python 的机器、一个用来发信的邮箱账号。
- OpenAI API Key:登录 OpenAI 平台后台创建,注意区分 API Key 和 ChatGPT 网页版账号,两者不是一回事,网页版会员不能直接当 API 用。
- Python 环境:建议 3.9 及以上。用
python3 --version确认,没有的话在 Ubuntu 上执行sudo apt install python3 python3-pip -y。 - 发信邮箱的授权信息:如果用 QQ 邮箱或 163 邮箱,需要在邮箱设置里开启 SMTP 服务并生成授权码,不要直接用登录密码。
安装依赖只需要一条命令:
pip3 install openai
邮件发送用 Python 自带的 smtplib,不需要额外安装。
编写自动生成回复的脚本
新建一个文件 mail_reply.py,按下面的结构填写。
密钥和授权码建议先写进环境变量,不要硬编码在脚本里。
import os
import smtplib
from email.mime.text import MIMEText
from openai import OpenAI
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
def generate_reply(mail_text):
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "你是客服助手,用中文礼貌回复,控制在150字内。"},
{"role": "user", "content": mail_text}
]
)
return resp.choices[0].message.content
def send_mail(to_addr, subject, body):
msg = MIMEText(body, "plain", "utf-8")
msg["Subject"] = subject
msg["From"] = os.environ["MAIL_USER"]
msg["To"] = to_addr
with smtplib.SMTP_SSL("smtp.qq.com", 465) as s:
s.login(os.environ["MAIL_USER"], os.environ["MAIL_PASS"])
s.sendmail(os.environ["MAIL_USER"], [to_addr], msg.as_string())
if __name__ == "__main__":
incoming = "客户问:你们的设备支持远程升级吗?"
reply = generate_reply(incoming)
print(reply)
send_mail("customer@example.com", "回复:设备升级问题", reply)
运行前先把三个环境变量设好:
export OPENAI_API_KEY="你的API密钥"
export MAIL_USER="你的邮箱@qq.com"
export MAIL_PASS="你的SMTP授权码"
然后执行 python3 mail_reply.py。
如果终端打印出模型生成的回复文本,说明生成环节已经通了。
容易踩的几个坑
把 ChatGPT 订阅当成 API 额度。
ChatGPT Plus 和 API 是分开计费的,API Key 需要在平台单独充值才能调用,否则会返回额度不足的错误。
SMTP 端口选错。
QQ 邮箱用 465 端口配 SMTP_SSL,如果改成 587 就得用 starttls(),两者不能混用,否则会卡在连接或认证阶段。
回复内容直接群发。
模型生成的是通用话术,涉及价格、交期、合同条款这类内容,建议先人工过一遍再发,避免生成不准确的信息。
把密钥提交到代码仓库。
用环境变量或 .env 文件管理,.env 记得写进 .gitignore。
长邮件超时。
邮件正文特别长时,模型响应会变慢,可以在请求参数里加 timeout,或者对正文做长度截断。
怎么确认这套流程真的可用
生成环节验证:单独调用 generate_reply(),看返回文本是否贴合输入邮件的意思,语气是否符合预期。
发送环节验证:先给自己发一封测试邮件,确认能收到、主题和正文没有乱码。
中文乱码通常是编码没指定 utf-8 导致的。
整体验证:把一封真实的历史邮件内容作为输入,跑完整流程,检查最终收到的回复是否连贯、有没有答非所问。
如果结果不稳定,优先调整 system 提示词,把角色、语气和字数限制写得更明确。
常见疑问
没有编程基础能用吗? 上面的脚本复制改几个参数就能跑,但需要会基本的命令行操作。
完全不想写代码,可以考虑现成的邮件自动化工具,只是灵活度会低一些。
API 调用怎么计费? 按输入和输出的 token 数量计费,具体单价以 OpenAI 官方页面为准,不同模型价格差异较大,建议先选便宜的小模型测试。
能接公司邮箱吗? 可以,把 SMTP 服务器地址和端口换成公司邮箱服务商提供的参数即可,认证方式按服务商文档配置。
生成的内容能保证准确吗? 不能。
模型输出存在不确定性,重要邮件必须人工复核,尤其是涉及金额、承诺和合规表述的部分。
到这一步,一个最小可用的 ChatGPT 邮件回复生成流程就跑通了。
后续可以再接入 IMAP 自动读取收件箱,把整个收信、生成、发信串起来,但建议先把手动触发的版本调稳再考虑自动化。