OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  outlook:通过 Microsoft Graph API 管理 Outlook 邮件与日历

outlook:通过 Microsoft Graph API 管理 Outlook 邮件与日历

 
  user ·  2026-02-22 23:40:26 · 3 次点击  · 0 条评论  

名称: outlook
描述: 通过 Microsoft Graph API 读取、搜索和管理 Outlook 邮件与日历。当用户询问邮件、收件箱、Outlook、Microsoft 邮件、日历事件或日程安排时使用。
版本: 1.3.0
作者: jotamed


Outlook 技能

通过 OAuth2 使用 Microsoft Graph API 访问 Outlook/Hotmail 邮件和日历。

快速设置(自动)

# 要求:Azure CLI, jq
./scripts/outlook-setup.sh

设置脚本将:
1. 使用设备代码流登录 Azure
2. 自动创建应用注册
3. 配置 API 权限(Mail.ReadWrite、Mail.Send、Calendars.ReadWrite)
4. 引导您完成授权
5. 将凭据保存到 ~/.outlook-mcp/

手动设置

请参阅 references/setup.md,了解通过 Azure 门户进行分步手动配置的说明。

使用方法

令牌管理

./scripts/outlook-token.sh refresh  # 刷新过期的令牌
./scripts/outlook-token.sh test     # 测试连接
./scripts/outlook-token.sh get      # 打印访问令牌

读取邮件

./scripts/outlook-mail.sh inbox [数量]           # 列出最新邮件(默认:10)
./scripts/outlook-mail.sh unread [数量]          # 列出未读邮件
./scripts/outlook-mail.sh search "查询词" [数量]  # 搜索邮件
./scripts/outlook-mail.sh from <邮箱地址> [数量]   # 列出指定发件人的邮件
./scripts/outlook-mail.sh read <邮件ID>           # 读取邮件内容
./scripts/outlook-mail.sh attachments <邮件ID>    # 列出邮件附件

管理邮件

./scripts/outlook-mail.sh mark-read <邮件ID>      # 标记为已读
./scripts/outlook-mail.sh mark-unread <邮件ID>    # 标记为未读
./scripts/outlook-mail.sh flag <邮件ID>           # 标记为重要
./scripts/outlook-mail.sh unflag <邮件ID>         # 取消重要标记
./scripts/outlook-mail.sh delete <邮件ID>         # 移动到垃圾箱
./scripts/outlook-mail.sh archive <邮件ID>        # 归档邮件
./scripts/outlook-mail.sh move <邮件ID> <文件夹>   # 移动到指定文件夹

发送邮件

./scripts/outlook-mail.sh send <收件人> <主题> <正文> # 发送新邮件
./scripts/outlook-mail.sh reply <邮件ID> "正文"       # 回复邮件

文件夹与统计

./scripts/outlook-mail.sh folders                 # 列出邮件文件夹
./scripts/outlook-mail.sh stats                   # 收件箱统计信息

日历

查看事件

./scripts/outlook-calendar.sh events [数量]       # 列出即将发生的事件
./scripts/outlook-calendar.sh today               # 列出今天的事件
./scripts/outlook-calendar.sh week                # 列出本周的事件
./scripts/outlook-calendar.sh read <事件ID>       # 查看事件详情
./scripts/outlook-calendar.sh calendars           # 列出所有日历
./scripts/outlook-calendar.sh free <开始时间> <结束时间> # 检查空闲时间

创建事件

./scripts/outlook-calendar.sh create <主题> <开始时间> <结束时间> [地点]  # 创建事件
./scripts/outlook-calendar.sh quick <主题> [时间]                        # 快速创建1小时事件

管理事件

./scripts/outlook-calendar.sh update <事件ID> <字段> <值>  # 更新事件(主题/地点/开始/结束时间)
./scripts/outlook-calendar.sh delete <事件ID>              # 删除事件

日期格式:YYYY-MM-DDTHH:MM(例如:2026-01-26T10:00

示例输出

$ ./scripts/outlook-mail.sh inbox 3

{
  "n": 1,
  "subject": "您的每周摘要",
  "from": "digest@example.com",
  "date": "2026-01-25T15:44",
  "read": false,
  "id": "icYY6QAIUE26PgAAAA=="
}
{
  "n": 2,
  "subject": "会议提醒",
  "from": "calendar@outlook.com",
  "date": "2026-01-25T14:06",
  "read": true,
  "id": "icYY6QAIUE26PQAAAA=="
}

$ ./scripts/outlook-mail.sh read "icYY6QAIUE26PgAAAA=="

{
  "subject": "您的每周摘要",
  "from": { "name": "摘要", "address": "digest@example.com" },
  "to": ["you@hotmail.com"],
  "date": "2026-01-25T15:44:00Z",
  "body": "这是本周发生的事情..."
}

$ ./scripts/outlook-mail.sh stats

{
  "folder": "收件箱",
  "total": 14098,
  "unread": 2955
}

$ ./scripts/outlook-calendar.sh today

{
  "n": 1,
  "subject": "团队站会",
  "start": "2026-01-25T10:00",
  "end": "2026-01-25T10:30",
  "location": "Teams",
  "id": "AAMkAGQ5NzE4YjQ3..."
}

$ ./scripts/outlook-calendar.sh create "与客户午餐" "2026-01-26T13:00" "2026-01-26T14:00" "餐厅"

{
  "status": "事件已创建",
  "subject": "与客户午餐",
  "start": "2026-01-26T13:00",
  "end": "2026-01-26T14:00",
  "id": "AAMkAGQ5NzE4YjQ3..."
}

令牌刷新

访问令牌约1小时后过期。请使用以下命令刷新:

./scripts/outlook-token.sh refresh

文件

  • ~/.outlook-mcp/config.json - 客户端 ID 和密钥
  • ~/.outlook-mcp/credentials.json - OAuth 令牌(访问令牌 + 刷新令牌)

权限

  • Mail.ReadWrite - 读取和修改邮件
  • Mail.Send - 发送邮件
  • Calendars.ReadWrite - 读取和修改日历事件
  • offline_access - 刷新令牌(保持登录状态)
  • User.Read - 基本个人资料信息

注意事项

  • 邮件 IDid 字段显示完整邮件 ID 的最后 20 个字符。请将此 ID 与 readmark-readdelete 等命令一起使用。
  • 编号结果:邮件已编号(n: 1, 2, 3...),便于在对话中引用。
  • 文本提取:HTML 邮件正文会自动转换为纯文本。
  • 令牌过期:访问令牌约1小时后过期。当看到身份验证错误时,请运行 outlook-token.sh refresh
  • 最近邮件readmark-read 等命令会在最近的 100 封邮件中搜索指定的 ID。

故障排除

“Token expired” → 运行 outlook-token.sh refresh

“Invalid grant” → 令牌无效,请重新运行设置:outlook-setup.sh

“Insufficient privileges” → 在 Azure 门户中检查应用权限:API 权限

“Message not found” → 该邮件可能超过 100 封。请先使用搜索功能查找。

“Folder not found” → 请使用确切的文件夹名称。运行 folders 查看可用文件夹。

支持的账户类型

  • 个人 Microsoft 账户(outlook.com、hotmail.com、live.com)
  • 工作/学校账户(Microsoft 365)- 可能需要管理员同意

更新日志

v1.3.0

  • 新增:日历支持 (outlook-calendar.sh)
    • 查看事件(今天、本周、即将发生)
    • 创建/快速创建事件
    • 更新事件详情(主题、地点、时间)
    • 删除事件
    • 检查可用性(空闲/忙碌)
    • 列出日历
  • 新增:Calendars.ReadWrite 权限

v1.2.0

  • 新增:mark-unread - 将邮件标记为未读
  • 新增:flag/unflag - 将邮件标记/取消标记为重要
  • 新增:delete - 将邮件移至垃圾箱
  • 新增:archive - 归档邮件
  • 新增:move - 将邮件移至任何文件夹
  • 新增:from - 按发件人筛选邮件
  • 新增:attachments - 列出邮件附件
  • 新增:reply - 回复邮件
  • 改进:send - 更好的错误处理和状态输出
  • 改进:move - 文件夹名称不区分大小写,出错时显示可用文件夹

v1.1.0

  • 修复:邮件 ID 现在使用唯一后缀(最后 20 个字符)
  • 新增:编号结果(n: 1, 2, 3...)
  • 改进:HTML 正文自动转换为纯文本
  • 新增:read 输出中包含 to 字段

v1.0.0

  • 初始版本
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor