← 返回
沟通协作 中文

TinkerClaw Outlook Hack

Your agent reads Outlook email all day. Drafts replies for you. Won't send a single one. Not even if you ask nicely.
你的助手全天候读取Outlook邮件,为你起草回复,但不会发送任何一封,即使你请求也不会。
globalcaos
沟通协作 clawhub v1.0.2 2 版本 100000 Key: 无需
★ 0
Stars
📥 621
下载
💾 15
安装
2
版本
#latest

概述

Outlook Hack

Your AI agent won't email the CEO at 3am.

Not because there's a setting. Not because there's a policy. Because the code physically cannot send emails. We removed that capability the way you'd remove a chainsaw from a toddler — completely and without negotiation.

What It Does

  • 📧 Read, search, and bulk-fetch emails across all folders
  • 📎 Index all attachments (name, type, size) per message
  • 📊 Generate digest summaries with top senders, unread counts, full body text
  • ✏️ Create email drafts (lands in Drafts folder — never sends)
  • 📅 Access calendar events, 👥 Browse contacts

Quick Start

1. Token Extraction (one-time, ~30 seconds)

Extract from the Teams tab, NOT Outlook. Classic Outlook no longer exists in most orgs, and new Outlook uses PoP tokens that can't be extracted. The Teams tab provides an MSAL refresh token (90-day, auto-rotating) that powers both this skill and the teams-hack skill.

Open Microsoft Teams (teams.cloud.microsoft) in Chrome with the OpenClaw browser relay attached. Then run this in-browser evaluation:

(() => {
  const keys = Object.keys(localStorage).filter(
    (k) => k.includes("refreshtoken") || k.includes("RefreshToken"),
  );
  const parsed = JSON.parse(localStorage.getItem(keys[0]));
  const accountKeys = Object.keys(localStorage).filter((k) => {
    try {
      return JSON.parse(localStorage.getItem(k)).tenantId;
    } catch {
      return false;
    }
  });
  let tenantId = null;
  for (const k of accountKeys) {
    try {
      tenantId = JSON.parse(localStorage.getItem(k)).tenantId;
      break;
    } catch {}
  }
  return { secret: parsed.secret, tenantId };
})();

Save the token via the teams CLI (NOT the outlook-mail-fetch script):

teams token store --refresh-token "<secret>" --tenant-id "<tenantId>"

2. Verify Access

node {baseDir}/scripts/outlook-mail-fetch.mjs --test

3. Bulk Fetch

# Last 6 months (default)
node {baseDir}/scripts/outlook-mail-fetch.mjs --fetch-all

# Custom range
node {baseDir}/scripts/outlook-mail-fetch.mjs --fetch-all --months 12

Output: ~/.openclaw/workspace/data/outlook-emails/

  • raw-emails.jsonl — full email data (subject, from, to, body text, preview)
  • attachments-index.jsonl — every attachment per message
  • email-summary.md — readable digest with stats and per-email summaries

Critical: Teams is the Token Source

SourceToken TypeExtractable?Lifetime
---------------------------------------------------------------------------------------------------------------
Teams (teams.cloud.microsoft)MSAL refresh token✅ Yes90 days, auto-rotates
New Outlook (outlook.cloud.microsoft)PoP token (Proof-of-Possession)❌ NoCrypto-bound to browser
Classic Outlook (outlook.office.com)Bearer access token⚠️ Deprecated/goneMost orgs migrated

Always extract from the Teams tab. New Outlook uses Proof-of-Possession tokens that cannot be extracted or replayed. Classic Outlook is deprecated and no longer available in most orgs.

How It Works (Technical)

  1. Share your Microsoft Teams tab with OpenClaw via the Browser Relay
  2. The agent reads localStorage to extract the MSAL refresh token
  3. Token is stored and exchanged for a Graph API access token via teams token store
  4. Both this skill and teams-hack share ~/.openclaw/credentials/outlook-msal.json (0600)
  5. The outlook-mail-fetch.mjs script uses the Graph API access token for mail operations
  6. Refresh token lasts 90 days and auto-rotates on each use

The skill is NOT scraping the page. It speaks Outlook's own REST API, authenticated through your existing browser session.

Token Lifetime & Refresh

  • Refresh token: 90 days, auto-rotates on each use (shared with teams-hack)
  • Access token: ~1 hour, automatically refreshed by the scripts
  • Any cron job using either skill keeps the refresh token alive
  • When expired: re-extract from Teams tab (one browser relay session)

Architecture Notes

  • Zero external dependencies — pure Node.js (v18+), no npm packages
  • Send-blocked — the script has no send/reply/forward functions. They don't exist.
  • Rate-limited — fetches 50 emails per page with automatic pagination
  • Body text cleaned — HTML stripped, whitespace normalized, truncated to 3000 chars per email

The Full Stack

Pair with whatsapp-ultimate for messaging and jarvis-voice for voice.

👉 Clone it. Fork it. Break it. Make it yours.

版本历史

共 2 个版本

  • v1.0.2 当前
    2026-06-07 12:32 安全 安全
  • v1.0.1
    2026-03-29 12:48 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

communication-collaboration

Slack

steipete
当需要通过 slack 工具从 Clawdbot 控制 Slack 时使用,包括在频道或私信中回复消息或置顶/取消置顶项目。
★ 157 📥 47,678
ai-intelligence

TinkerClaw Jarvis Voice

globalcaos
让AI化身JARVIS,配备声音、机智与完整人格,幽默拉满。
★ 3 📥 8,717
communication-collaboration

imap-smtp-email

gzlicanyi
使用IMAP/SMTP读取和发送邮件;检查新/未读邮件、获取内容、搜索邮箱、标记已读/未读、发送带附件的邮件。支持...
★ 113 📥 52,405