Outlook 日历配置指南

OpenClaw + Microsoft Graph API 集成配置

配置日期:2026-02-26


概述

本文档记录了在 OpenClaw 中配置 Outlook 日历功能的完整过程。通过 Microsoft Graph API,可以实现:

  • 读取 Outlook 邮件
  • 管理日历事件
  • 创建/更新/删除日程
  • 与 OpenClaw 智能助手集成

前置条件

  1. Microsoft 账户 - Outlook.com、Hotmail、Live 或 Microsoft 365 账户
  2. Azure Portal 访问权限 - https://portal.azure.com
  3. 工具安装 - jq(JSON 处理工具)
  4. OpenClaw 环境 - 已安装 outlook skill

配置步骤

Step 1: 创建 Azure 应用注册

  1. 访问 https://portal.azure.com
  2. 搜索 “App registrations” → 点击进入
  3. 点击 “+ New registration”
  4. 填写应用信息:
    • 名称: OpenClaw-Outlook(或自定义名称)
    • 支持的账户类型: 选择 “Accounts in any organizational directory and personal Microsoft accounts”
    • 重定向 URI:
      • 平台 = Web
      • URI = http://localhost
  5. 点击 Register

Step 2: 获取客户端凭据

注册完成后:

  1. 在应用概述页面,复制 Application (client) ID → 这是你的 CLIENT_ID

  2. 左侧菜单进入 Certificates & secrets

  3. 点击 + New client secret

  4. 添加描述(如 “openclaw-token”)并选择有效期

  5. 点击 Add

  6. 立即复制 Value(不是 ID)→ 这是你的 CLIENT_SECRET

    ⚠️ 重要: Client Secret 只显示一次,务必立即保存!

Step 3: 配置 API 权限

  1. 左侧菜单进入 API permissions

  2. 点击 + Add a permission

  3. 选择 Microsoft GraphDelegated permissions

  4. 添加以下权限:

    权限 用途
    Mail.ReadWrite 读取和写入邮件
    Mail.Send 发送邮件
    Calendars.ReadWrite 读取和写入日历
    User.Read 读取用户基本信息
    offline_access 离线访问(刷新令牌)
  5. 点击 Add permissions

注:offline_access 在授权时自动请求,无需在此配置。

Step 4: 保存配置文件

创建配置目录和文件:

# 创建目录
New-Item -ItemType Directory -Force -Path ~/.outlook-mcp

# 创建配置文件
@"
{
  "client_id": "YOUR_CLIENT_ID",
  "client_secret": "YOUR_CLIENT_SECRET"
}
"@ | Out-File -FilePath ~/.outlook-mcp/config.json -Encoding UTF8

Step 5: 授权应用

构建授权 URL(替换 YOUR_CLIENT_ID):

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=http://localhost&scope=https://graph.microsoft.com/Mail.ReadWrite%20https://graph.microsoft.com/Mail.Send%20https://graph.microsoft.com/Calendars.ReadWrite%20offline_access&response_mode=query
  1. 在浏览器中打开此 URL
  2. 使用 Microsoft 账户登录
  3. 授予请求的权限
  4. 重定向到 http://localhost?code=XXXXX...
  5. 复制 URL 中的 code 值(code= 后到 & 或结尾的部分)

Step 6: 交换令牌

使用授权码获取访问令牌:

$CLIENT_ID = "your-client-id"
$CLIENT_SECRET = "your-client-secret"
$AUTH_CODE = "the-code-from-step-5"

# 发送请求
$body = @{
    client_id = $CLIENT_ID
    client_secret = $CLIENT_SECRET
    code = $AUTH_CODE
    redirect_uri = "http://localhost"
    grant_type = "authorization_code"
    scope = "https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/Calendars.ReadWrite offline_access"
}

$response = Invoke-RestMethod -Uri "https://login.microsoftonline.com/common/oauth2/v2.0/token" `
    -Method POST `
    -Body $body `
    -ContentType "application/x-www-form-urlencoded"

$response | ConvertTo-Json | Out-File -FilePath ~/.outlook-mcp/credentials.json -Encoding UTF8

Step 7: 验证配置

# 获取访问令牌
$creds = Get-Content ~/.outlook-mcp/credentials.json | ConvertFrom-Json
$ACCESS_TOKEN = $creds.access_token

# 测试 API
$headers = @{ "Authorization" = "Bearer $ACCESS_TOKEN" }
Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/me/mailFolders/inbox" -Headers $headers

成功后会显示收件箱统计信息。


日常使用

令牌管理

# 刷新过期令牌
./scripts/outlook-token.sh refresh

# 测试连接
./scripts/outlook-token.sh test

# 获取访问令牌
./scripts/outlook-token.sh get

日历操作

# 查看今日日程
./scripts/outlook-calendar.sh today

# 查看本周日程
./scripts/outlook-calendar.sh week

# 创建事件
./scripts/outlook-calendar.sh create "会议主题" "2026-02-27T10:00" "2026-02-27T11:00" "会议室A"

# 快速创建1小时事件
./scripts/outlook-calendar.sh quick "临时会议" "2026-02-27T14:00"

# 更新事件
./scripts/outlook-calendar.sh update <id> location "新地点"

# 删除事件
./scripts/outlook-calendar.sh delete <id>

邮件操作

# 查看收件箱
./scripts/outlook-mail.sh inbox 10

# 查看未读邮件
./scripts/outlook-mail.sh unread

# 搜索邮件
./scripts/outlook-mail.sh search "关键词"

# 发送邮件
./scripts/outlook-mail.sh send to@example.com "主题" "正文"

与 OpenClaw 集成

配置完成后,可以通过 OpenClaw 直接操作 Outlook:

  • 自然语言查询: “今天的日程是什么?”
  • 添加日程: “明天下午3点安排一个会议”
  • 查看邮件: “有什么新邮件?”

常见问题

“Token expired” 错误

  • 访问令牌有效期约 1 小时
  • 运行 ./scripts/outlook-token.sh refresh 刷新

“Invalid grant” 错误

  • 令牌失效,需要重新授权
  • 重新运行 setup 步骤

“Insufficient privileges” 错误

  • 检查 Azure Portal 中的 API 权限配置
  • 确保所有必要权限已添加

企业账户问题

  • 企业账户可能需要管理员同意
  • 联系 IT 管理员或使用个人 Microsoft 账户

文件位置

文件 路径 用途
配置文件 ~/.outlook-mcp/config.json Client ID 和 Secret
凭证文件 ~/.outlook-mcp/credentials.json OAuth 令牌
Skill 文件 skills/outlook/SKILL.md 使用说明

安全建议

  1. 保护 Client Secret - 不要提交到版本控制
  2. 定期刷新令牌 - 设置自动刷新脚本
  3. 最小权限原则 - 只授予必要的 API 权限
  4. 监控使用 - 定期检查 Azure Portal 中的应用活动

参考资料


文档版本: 1.0
最后更新: 2026-02-27
适用环境: Windows 10/11 + OpenClaw 2026.2.x

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐