一个基于Python的智能邮件助手,可以自动读取Outlook邮箱的未读邮件,使用OpenAI兼容API生成智能回复并自动发送。
- ✅ OAuth2网页登录,无需密码(安全)
- ✅ 自动监控Outlook邮箱的未读邮件
- ✅ 支持OpenAI兼容API(可自定义base_url)
- ✅ 使用AI生成智能、专业的回复
- ✅ 自动发送回复并标记邮件为已读
- ✅ 可配置的检查间隔和AI参数
- ✅ 完整的日志记录
- ✅ 错误处理和自动重试
- ✅ Token自动刷新机制
cd ~/Documents/Programing☕️/ai-email-assistantpython3 -m venv venv
source venv/bin/activate # Mac/Linux
# 或者
venv\Scripts\activate # Windowspip install -r requirements.txt复制 .env.example 为 .env:
cp .env.example .env然后编辑 .env 文件,填入你的配置:
# Outlook邮箱配置 (OAuth2方式,无需密码)
EMAIL_ADDRESS=your_email@outlook.com
# OpenAI兼容API配置
OPENAI_API_KEY=your_openai_api_key
OPENAI_BASE_URL=https://api.openai.com/v1
# 邮件检查间隔(秒)默认60秒=1分钟
CHECK_INTERVAL=60
# AI回复设置
AI_MODEL=gpt-3.5-turbo
AI_TEMPERATURE=0.7
REPLY_LANGUAGE=zh-CN✨ 新特性:使用OAuth2网页登录,无需密码,更安全!
- 程序会自动打开浏览器
- 显示一个设备代码(例如:ABCD-1234)
- 在浏览器中输入该代码
- 使用你的Outlook账户登录并授权
- 授权后,程序会自动获取并保存访问令牌
- Token会自动刷新,无需重复授权
- 🔐 更安全:不需要存储密码
- 🔄 自动刷新:Token过期会自动更新
- 🚀 更简单:无需创建应用密码
✨ 支持所有OpenAI兼容的API服务
OPENAI_API_KEY=sk-...
OPENAI_BASE_URL=https://api.openai.com/v1# Azure OpenAI
OPENAI_BASE_URL=https://your-resource.openai.azure.com/
# 本地模型(Ollama)
OPENAI_BASE_URL=http://localhost:11434/v1
# 其他第三方服务
OPENAI_BASE_URL=https://api.your-service.com/v1只要是支持OpenAI API格式的服务都可以使用!
CHECK_INTERVAL: 检查邮件的间隔(秒),建议60-600秒AI_MODEL: 模型名称,根据你使用的API服务而定AI_TEMPERATURE: 控制回复创意度(0-1),0.7为推荐值REPLY_LANGUAGE: 回复语言,如zh-CN、en-US等OPENAI_BASE_URL: API服务地址,支持任何OpenAI兼容的服务
python email_assistant.pynohup python email_assistant.py > output.log 2>&1 &按 Ctrl+C 或使用:
pkill -f email_assistant.py所有操作都会记录在 email_assistant.log 文件中:
tail -f email_assistant.log- 程序启动时,会弹出浏览器进行OAuth2授权(仅首次)
- 授权成功后,按设定的间隔(默认1分钟)检查邮箱
- 发现未读邮件时,读取发件人、主题和正文
- 调用OpenAI兼容API生成智能回复
- 自动发送回复邮件
- 将原邮件标记为已读
- 继续等待下一次检查
- 首次运行:需要在浏览器中授权,跟随提示完成即可
- API费用:OpenAI API按使用量计费,建议设置合理的检查间隔
- 隐私安全:不要将
.env和outlook_token.json文件提交到代码仓库 - 邮件过滤:可以在代码中添加过滤规则,只回复特定邮件
- 回复质量:可以调整提示词(prompt)来优化AI回复的风格和内容
- 兼容API:支持任何OpenAI兼容的API服务,包括本地模型
在 email_assistant.py 中的 generate_ai_reply 方法里,你可以修改提示词(prompt)来调整回复风格,例如:
- 更正式的商务风格
- 更友好的客服风格
- 特定行业的专业术语
- 添加公司签名等
- 检查网络连接
- 确认邮箱地址正确
- 尝试重新授权:删除
outlook_token.json文件后重新运行
- 确保浏览器能正常访问 login.microsoftonline.com
- 检查是否正确输入了设备代码
- 确认使用的是Outlook/Hotmail/Microsoft账户
- 检查API密钥是否有效
- 确认
OPENAI_BASE_URL配置正确 - 检查网络是否能访问API服务
- 如使用第三方服务,确认服务可用
- 查看
email_assistant.log日志文件 - 确认所有依赖已正确安装
- 检查Python版本(需要3.7+)
MIT License
欢迎提交问题和改进建议!