Outlook电子邮件导出器
将Outlook.com电子邮件导出为带附件的Markdown文件。
设置
# Create conda environment
conda env create -f environment.yml
conda activate outlook-export首次授权
python outlook_export.py --reauth- 将显示URL和代码
- 打开https://microsoft.com/devicelogin在浏览器中
- 输入代码并使用您的Microsoft帐户登录
- 令牌自动保存到
.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读取,但从未存储或传输到其他地方。
设置
- 先进行身份验证:
python outlook_export.py --auth-only- 配置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"]
}
}
}- 重新启动克劳德桌面
可用工具
| 工具 | 说明 |
|---|---|
list_email_folders | 列出邮箱中的所有文件夹 |
get_recent_emails | 获取最近N天的电子邮件(按未读/标记筛选) |
search_emails | 使用OData筛选器查询进行搜索 |
get_email_by_id | 按ID获取完整的电子邮件内容 |
示例提示
- “查看我的收件箱中过去3天的电子邮件,并总结任何行动项目”
- “显示我的未读电子邮件”
- “查找所有标记的电子邮件,并列出需要我注意的事项”
- “搜索来自的电子邮件boss@company.com"
