邮箱管家 - 统一邮件收发助手
一个脚本支持所有主流邮箱。改配置文件即可切换邮箱类型,无需改代码。
文件位置
- 脚本:
~/.workbuddy/skills/exchange-mail-sender/scripts/mail_client.py - 配置:
~/.workbuddy/skills/exchange-mail-sender/config/mail_config.json
> Exchange 邮箱首次使用时脚本自动安装 exchangelib;其他邮箱 (163/QQ/Outlook/Gmail) 用 Python 内置库,无需安装任何依赖。
支持的邮箱
| provider | 邮箱类型 | 认证方式 | 密码类型 |
|---|---|---|---|
exchange |
企业 Exchange 服务器 | NTLM / basic | 邮箱登录密码 |
163 |
163/126/yeah 邮箱 | IMAP+SMTP | 客户端授权密码 |
qq |
QQ 邮箱 | IMAP+SMTP | 授权码 |
outlook |
Outlook/Hotmail/Live | IMAP+SMTP | 应用密码 |
hotmail |
Hotmail | IMAP+SMTP | 应用密码 |
gmail |
Gmail | IMAP+SMTP | 应用密码 |
custom |
自定义 IMAP/SMTP 服务器 | IMAP+SMTP | 密码 |
配置文件格式
Exchange 企业邮箱
{
"provider": "exchange",
"server": "mail.your-company.com",
"email": "your-name@your-company.com",
"username": "your-username",
"auth_type": "NTLM"
}
163 / QQ / Outlook / Hotmail / Gmail
只需填 provider 和 email,服务器自动识别:
{
"provider": "qq",
"email": "your-name@qq.com"
}
163 邮箱把 provider 改成 "163",Gmail 改成 "gmail",以此类推。
自定义服务器
{
"provider": "custom",
"imap_server": "imap.your-company.com",
"smtp_server": "smtp.your-company.com",
"email": "your-name@your-company.com"
}
> 密码不写入配置文件,每次用 --password 传入。
AI 助手工作流(重要)
收到用户指令后,按以下步骤执行:
第 1 步:环境预检
python ~/.workbuddy/skills/exchange-mail-sender/scripts/mail_client.py \
--config ~/.workbuddy/skills/exchange-mail-sender/config/mail_config.json --check
[READY]:环境就绪,继续第 2 步[WARN] Config still has template values:配置未填写 → 见下方"配置引导"[INFO] Password not provided:需要用--password传入密码
第 2 步:确认密码
如果对话中用户已提供过密码,直接使用。否则询问:
> "请提供你的邮箱密码/授权码(仅用于本次命令,不会保存)"
第 3 步:执行操作
根据用户意图选择对应命令(见下方命令参考)。
配置引导(配置未填写时)
如果 --check 显示模板值未修改,询问用户以下信息:
- 你用的是什么邮箱?(Exchange 企业邮箱 / 163 / QQ / Outlook / Gmail)
- 你的邮箱地址是什么?
- 如果是 Exchange:服务器地址是什么?(如
mail.company.com)登录用户名是什么?
拿到后,用 Write 工具更新 config/mail_config.json,然后重新 --check 确认。
场景速查
| 用户说 | AI 做什么 |
|---|---|
| "发邮件给 XXX,内容是 XXX" | 直接 --send |
| "回复 XXX 的邮件" | 先 --search "XXX" 找 ID,再 --reply <ID> |
| "转发 XXX 的邮件给 YYY" | 先 --search "XXX" 找 ID,再 --forward <ID> --to YYY |
| "看看收件箱" | --list --limit 10 |
| "搜索关于 XXX 的邮件" | --search "XXX" |
| "看看已发送" | --sent --limit 10 |
| "帮我带附件发邮件" | --send --attach "file1" "file2" |
命令参考
以下变量约定:
- SCRIPT = ~/.workbuddy/skills/exchange-mail-sender/scripts/mail_client.py
- CFG = ~/.workbuddy/skills/exchange-mail-sender/config/mail_config.json
发送邮件
python {SCRIPT} --config {CFG} --password <密码> \
--send --to "a@example.com" --subject "标题" --body "正文"
多收件人/抄送/密送/附件/HTML:
python {SCRIPT} --config {CFG} --password <密码> \
--send --to "a@example.com,b@example.com" \
--cc "cc@example.com" --bcc "bcc@example.com" \
--subject "标题" --body "正文" \
--attach "C:\path\file1.pdf" "C:\path\file2.xlsx" \
--html
回复 / 转发
# 先找邮件 ID
python {SCRIPT} --config {CFG} --password <密码> --list --limit 10
python {SCRIPT} --config {CFG} --password <密码> --search "关键词"
# 回复
python {SCRIPT} --config {CFG} --password <密码> --reply <邮件ID> --body "回复内容"
# 全部回复
python {SCRIPT} --config {CFG} --password <密码> --reply <邮件ID> --reply-all --body "回复内容"
# 转发
python {SCRIPT} --config {CFG} --password <密码> \
--forward <邮件ID> --to "someone@example.com" --comment "请查看"
收件箱 / 已发送
python {SCRIPT} --config {CFG} --password <密码> --list --limit 20
python {SCRIPT} --config {CFG} --password <密码> --search "关键词"
python {SCRIPT} --config {CFG} --password <密码> --read <邮件ID>
python {SCRIPT} --config {CFG} --password <密码> --sent --limit 10
python {SCRIPT} --config {CFG} --password <密码> --list --limit 50 --output emails.json
标记已读/未读
python {SCRIPT} --config {CFG} --password <密码> --mark-read <邮件ID>
python {SCRIPT} --config {CFG} --password <密码> --mark-unread <邮件ID>
注意事项
- 密码只通过
--password传入,不写入配置文件 - Exchange 用户名:先试纯用户名,不行试
DOMAIN\username或邮箱地址 - Exchange 认证失败:NTLM 不行换
basic(改配置auth_type或命令行--auth-type basic) - 163/QQ 需先在邮箱网页设置中开启 IMAP,获取授权码/授权密码
- Gmail 需开启两步验证后生成应用密码
- 附件用绝对路径
- 多收件人用逗号分隔
- exchangelib 首次运行自动安装(仅 Exchange 需要)