这是一个用于 Codex 完成任务后发送邮件通知的脚本。当 Codex 完成一个回合的任务时,自动发送邮件通知到指定邮箱。
- 自动提取 Codex 任务请求和执行结果
- 支持 Windows 和 Linux 系统
- 邮件内容包含机器信息、时间戳和执行摘要
- 使用环境变量安全管理邮箱凭据
- Python 3.10+
- 有效的 SMTP 邮箱账户(QQ 邮箱、Gmail、163 等)
将项目文件放置在合适的位置,例如:
- Windows:
C:\Users\<用户名>\.codex\ - Linux:
~/.codex/
本项目支持两种依赖管理方式:
uv 是一个快速的 Python 包管理器,推荐使用。
安装 uv:
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh安装项目依赖:
uv sync这会自动创建虚拟环境并安装所有依赖。
pip install -r requirements.txt复制示例配置文件并编辑:
Windows (PowerShell):
copy env.example .envLinux (Bash):
cp env.example .env编辑 .env 文件,填入实际的邮件配置信息:
SMTP_SERVER=smtp.qq.com
SMTP_PORT=587
EMAIL_USER=你的QQ号@qq.com
EMAIL_PASSWORD=你的QQ邮箱授权码
TO_EMAIL=接收通知的邮箱@example.com
QQ邮箱需要使用授权码,而不是QQ密码:
- 登录 QQ 邮箱网页版 (mail.qq.com)
- 点击顶部「设置」->「账户」
- 找到「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务」部分
- 开启「IMAP/SMTP服务」(推荐)或「POP3/SMTP服务」
- 按照提示发送短信验证
- 生成授权码后,复制并填入
.env文件的EMAIL_PASSWORD字段
注意:授权码只显示一次,请妥善保存。
常见邮箱的 SMTP 配置:
- Gmail:
smtp.gmail.com(端口 587) - 需要应用专用密码 - 163邮箱:
smtp.163.com(端口 465 或 25) - 需要授权码 - Outlook:
smtp-mail.outlook.com(端口 587) - 使用账户密码
编辑 Codex 的配置文件 config.toml:
Windows 系统:
配置文件位置:C:\Users\<用户名>\.codex\config.toml
例子: example\win\config.toml
model = "gpt-5.1-codex-max"
# 配置邮件通知(注意:notify 必须在最顶层,不能在任何 [section] 下面)
#使用 uv run
notify = ["uv", "run", "--directory", "C:\\Users\\<用户名>\\.codex", "notify_mail.py"]
[history]
persistence = "save-all"
[tui]
notifications = ["agent-turn-complete"]Linux 系统:
配置文件位置:~/.codex/config.toml
例子: example/ubuntu/config.toml
model = "gpt-5.1-codex-max"
# 配置邮件通知(注意:notify 必须在最顶层,不能在任何 [section] 下面)
# 使用 uv run
notify = ["uv", "run", "--directory", "/home/<用户名>/.codex", "notify_mail.py"]
[history]
persistence = "save-all"
[tui]
notifications = ["agent-turn-complete"]在配置完成后,可以手动测试脚本是否能正常发送邮件:
使用 uv(推荐):
uv run test_notify.py如果配置正确,你应该能收到一封测试邮件。
启动 Codex 并给它一个简单的任务:
请帮我创建一个简单的 Python 函数,实现两数相加
当 Codex 完成任务后,你应该会收到邮件通知。
收到的邮件会包含以下信息:
- 邮件主题:
Codex任务完成 - <系统名称> - 任务请求: 你发送给 Codex 的原始请求
- 机器信息: 运行 Codex 的机器名称和操作系统
- 时间戳: 任务完成的时间
- 执行结果: Codex 的回复摘要(最多显示前 3 个要点)
你可以编辑 notify_mail.py 中的 format_email_content 函数来自定义邮件内容:
- 修改邮件主题格式
- 调整显示的要点数量(默认 3 个)
- 添加更多机器信息
- 修改文本截断长度
在 .env 文件中,TO_EMAIL 可以使用逗号分隔多个邮箱:
TO_EMAIL=email1@example.com,email2@example.com
然后修改 notify_mail.py 第 114 行:
msg['To'] = TO_EMAIL # 保持不变,SMTP 会自动处理参考官方教程了解更多通知方式:
- Linux 桌面通知:使用
notify-send - Windows Toast 通知:使用
win10toast模块 - 企业微信、钉钉等 Webhook 通知
参考链接:https://kanman.de/en/posts/codex-desktop-notifications/
notify_mail.py- 主脚本,处理 Codex 通知并发送邮件test_notify.py- 测试脚本,验证邮件配置.env- 环境变量配置文件(需手动创建)env.example- 环境变量配置示例pyproject.toml- 项目配置文件(uv 使用)
如果你使用 uv 包管理器,只需以下几步:
# 1. 进入项目目录
cd ~/.codex # Linux
# 或 cd C:\Users\<用户名>\.codex # Windows
# 2. 安装依赖(会创建 .venv 虚拟环境)
uv sync
# 3. 复制并配置环境变量
cp env.example .env # Linux
# 或 copy env.example .env # Windows
# 4. 编辑 .env 文件,填入邮箱配置
# 5. 测试配置
uv run test_notify.py
# 6. 从其他目录测试(验证跨目录调用)
cd /tmp
uv run --directory ~/.codex test_notify.py
# 或使用虚拟环境 Python
~/.codex/.venv/bin/python ~/.codex/test_notify.py
# 7. 在 config.toml 中配置 notify
# 推荐使用方式 1(--directory)或方式 2(.venv Python)