邮件导出工具

Outlook邮件导出工具,支持将邮件及附件导出为Markdown文件,适用于本地存储、备份和自动化处理。

  • by barelyworkingcode
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 barelyworkingcode/skill_email_outlook

使用说明

Outlook电子邮件导出器

将Outlook.com电子邮件导出为带附件的Markdown文件。

设置

# Create conda environment
conda env create -f environment.yml
conda activate outlook-export

首次授权

python outlook_export.py --reauth
  1. 将显示URL和代码
  2. 打开https://microsoft.com/devicelogin在浏览器中
  3. 输入代码并使用您的Microsoft帐户登录
  4. 令牌自动保存到 .token_cache.json (有效期~90天)

用法

# List folders
python outlook_export.py --list-folders

# Export folder (outputs to ./mail/Inbox/)
python outlook_export.py -f Inbox

# Limit emails
python outlook_export.py -f Inbox --limit 100

# Batch size (default 50)
python outlook_export.py -f Inbox --batch-size 25

# Group by conversation thread
python outlook_export.py -f Inbox --threads

# Filter emails
python outlook_export.py -f Inbox --filter "flag/flagStatus eq 'flagged'"
python outlook_export.py -f Inbox --filter "isRead eq false"
python outlook_export.py -f Inbox --filter "receivedDateTime ge 2024-01-01"

# Show all filter options
python outlook_export.py -?

输出结构

无螺纹:

./mail/Inbox/
  20240130_Meeting_notes.md
  20240129_Invoice/
    message.md
    attachments/
      invoice.pdf

带螺纹(--threads):

./mail/Inbox/
  20240115_Project_Discussion/
    20240115_093022.md
    20240116_141532.md
    attachments/
      20240116_report.pdf

可恢复下载

  • .manifest.json 跟踪下载的邮件ID
  • 重新运行会跳过已下载的电子邮件
  • 可以安全地中断和恢复

代理/自动化使用

对于非交互式使用(CI、AI代理、脚本):

# Step 1: Get tokens interactively (once)
python outlook_export.py --auth-only

# Step 2: Use refresh token (~90 days, recommended)
python outlook_export.py --refresh-token "0.AYIA..." -f Inbox

# Or use token cache file
python outlook_export.py --token-cache /path/to/.token_cache.json -f Inbox

# Or use access token (~1 hour only)
python outlook_export.py --token "eyJ0eX..." -f Inbox

选项参考

选项 描述
-f, --folder 要导出的文件夹名称
-o, --output 输出目录(默认: ./mail/{folder})
-n, --limit 要导出的最大电子邮件数
-b, --batch-size 每个API请求的电子邮件数(默认值:50)
-s, --skip 跳过前N封电子邮件
-t, --threads 按对话线索分组
--filter OData筛选器查询
-?, --filter-help 显示筛选器示例
--list-folders 列出可用文件夹
--reauth 清除缓存并重新进行身份验证
--auth-only 打印令牌并退出
--token 使用访问令牌(约1小时)
--refresh-token 使用刷新令牌(~90天)
--token-cache 使用令牌缓存文件

克劳德桌面集成(MCP服务器)

将电子邮件工具暴露给Claude Desktop,以获得“检查我最近的电子邮件并列出操作项”等提示

为什么选择MCP而不是云连接器?

MCP服务器 云连接器(Zapier等)
数据位置 留在您的计算机上 通过第三方服务器流动
隐私 电子邮件永远不会离开您的计算机 提供商可以访问您的数据
认证 您在本地控制令牌 OAuth授予对连接器服务的访问权限
成本 免费 通常基于订阅
延迟 直接API调用 通过云的额外跳
离线 使用缓存令牌 需要互联网连接到连接器

MCP(模型上下文协议)是Anthropic的AI工具集成开放标准。该服务器与Claude Desktop一起在本地运行-当Claude需要电子邮件数据时,它会调用您的本地MCP服务器,该服务器直接从Microsoft的API获取。您的电子邮件由Claude读取,但从未存储或传输到其他地方。

设置

  1. 先进行身份验证:

    python outlook_export.py --auth-only
    
  2. 配置Claude桌面 (~/Library/Application Support/Claude/claude_desktop_config.json):

    {
      "mcpServers": {
        "outlook-email": {
          "command": "/Users/{username}/miniconda3/envs/outlook-export/bin/python",
          "args": ["/Users/{username}/source/email/mcp_server.py"]
        }
      }
    }
    
  3. 重新启动克劳德桌面

可用工具

工具 说明
list_email_folders 列出邮箱中的所有文件夹
get_recent_emails 获取最近N天的电子邮件(按未读/标记筛选)
search_emails 使用OData筛选器查询进行搜索
get_email_by_id 按ID获取完整的电子邮件内容

示例提示

  • “查看我的收件箱中过去3天的电子邮件,并总结任何行动项目”
  • “显示我的未读电子邮件”
  • “查找所有标记的电子邮件,并列出需要我注意的事项”
  • “搜索来自的电子邮件boss@company.com"