用途
Outlook Automation 用于通过 Rube MCP(Composio)自动化 Microsoft Outlook 的日常操作,包括邮件搜索与查询、日历事件管理、联系人管理以及邮件文件夹整理。
前置条件
- 必须已连接 Rube MCP(RUBE_SEARCH_TOOLS 可用)。
- 需通过 RUBE_MANAGE_CONNECTIONS 激活 Outlook 连接,toolkit 为 outlook。
- 始终先调用 RUBE_SEARCH_TOOLS 获取当前工具 schema。
设置方式
- 获取 Rube MCP:在客户端配置中添加 https://rube.app/mcp 作为 MCP 服务器。无需 API 密钥,添加端点即可使用。
- 确认 RUBE_SEARCH_TOOLS 有响应,以验证 Rube MCP 可用。
- 调用 RUBE_MANAGE_CONNECTIONS,toolkit 为 outlook。
- 若连接不是 ACTIVE,按返回的授权链接完成 Microsoft OAuth。
- 确认连接状态为 ACTIVE 后再运行任何工作流。
主要能力
1. 搜索与过滤邮件
适用场景:用户希望在整个邮箱中查找特定邮件。
工具序列:
- OUTLOOK_SEARCH_MESSAGES:使用 KQL 语法跨所有文件夹搜索(必需)
- OUTLOOK_GET_MESSAGE:获取完整邮件详情(可选)
- OUTLOOK_LIST_OUTLOOK_ATTACHMENTS:列出邮件附件(可选)
- OUTLOOK_DOWNLOAD_OUTLOOK_ATTACHMENT:下载附件(可选)
关键参数:
- query:KQL 搜索字符串(from:、to:、subject:、received:、hasattachment:)
- from_index:分页起始位置(从 0 开始)
- size:每页结果数(最大 25)
- message_id:邮件 ID(使用搜索结果中的 hitId)
注意事项:
- 仅适用于 Microsoft 365/企业账户(不适用于 @hotmail.com/@outlook.com)。
- 分页依赖 hitsContainers[0].moreResultsAvailable,仅在为 false 时停止。
- 下游调用应使用搜索结果中的 hitId 作为 message_id,而非 resource.id。
- 存在索引延迟:非常新的邮件可能不会立即出现。
- 内联图片会显示为附件;可通过 mimetype 过滤出真实文档。
2. 查询文件夹中的邮件
适用场景:用户希望用 OData 过滤器列出特定文件夹中的邮件。
工具序列:
- OUTLOOK_LIST_MAIL_FOLDERS:列出邮件文件夹以获取文件夹 ID(前置步骤)
- OUTLOOK_QUERY_EMAILS:使用结构化过滤器查询邮件(必需)
关键参数:
- folder:文件夹名称('inbox'、'sentitems'、'drafts')或文件夹 ID
- filter:OData 过滤器(例如 isRead eq false and importance eq 'high')
- top:最大结果数(1-1000)
- orderby:排序字段与方向
- select:要返回的字段数组
注意事项:
- QUERY_EMAILS 仅搜索单个文件夹;跨文件夹搜索请使用 SEARCH_MESSAGES。
- 自定义文件夹需要文件夹 ID,而非显示名称;使用 LIST_MAIL_FOLDERS 获取。
- 始终检查 response['@odata.nextLink'] 以处理分页。
- 无法按收件人或正文内容过滤;此类需求请使用 SEARCH_MESSAGES。
3. 管理日历事件
适用场景:用户希望列出、搜索或查看日历事件。
工具序列:
- OUTLOOK_LIST_EVENTS:带过滤器列出事件(可选)
- OUTLOOK_GET_CALENDAR_VIEW:获取时间窗口内的事件(可选)
- OUTLOOK_GET_EVENT:获取特定事件详情(可选)
- OUTLOOK_LIST_CALENDARS:列出可用日历(可选)
- OUTLOOK_GET_SCHEDULE:获取空闲/忙碌信息(可选)
关键参数:
- filter:OData 过滤器(使用 start/dateTime,而非 receivedDateTime)
- start_datetime/end_datetime:日历视图的 ISO 8601 时间
- timezone:IANA 时区(例如 'America/New_York')
- calendar_id:可选的非主日历 ID
- select:要返回的字段
注意事项:
- 仅使用日历事件属性(start/dateTime、end/dateTime),不要使用邮件属性(receivedDateTime)。
- 日历视图需要 start_datetime 和 end_datetime。
- 重复事件需要 expand_recurring_events=true 才能看到单个实例。
- 拒绝状态通过 attendees[].status.response 按参与者查看。
4. 管理联系人
适用场景:用户希望列出、创建或整理联系人。
工具序列:
- OUTLOOK_LIST_CONTACTS:列出联系人(可选)
- OUTLOOK_CREATE_CONTACT:创建新联系人(可选)
- OUTLOOK_GET_CONTACT_FOLDERS:列出联系人文件夹(可选)
- OUTLOOK_CREATE_CONTACT_FOLDER:创建联系人文件夹(可选)
关键参数:
- givenName/surname:联系人姓名
- emailAddresses:邮件对象数组
- displayName:完整显示名称
- contact_folder_id:可选的联系人所属文件夹
注意事项:
- 创建联系人支持许多字段,但仅需 givenName 或 surname。
5. 管理邮件文件夹
适用场景:用户希望整理邮件文件夹。
工具序列:
- OUTLOOK_LIST_MAIL_FOLDERS:列出顶层文件夹(必需)
- OUTLOOK_LIST_CHILD_MAIL_FOLDERS:列出子文件夹(可选)
- OUTLOOK_CREATE_MAIL_FOLDER:创建新文件夹(可选)
关键参数:
- parent_folder_id:已知名称或文件夹 ID
- displayName:新文件夹名称
- include_hidden_folders:显示隐藏文件夹
注意事项:
- 已知文件夹名称:'inbox'、'sentitems'、'drafts'、'deleteditems'、'junkemail'、'archive'。
- 自定义文件夹操作需要文件夹 ID,而非显示名称。
常用模式
KQL 搜索语法
属性过滤器:
- from:user@example.com:发件人
- to:recipient@example.com:收件人
- subject:invoice:主题包含
- received>=2025-01-01:日期过滤
- hasattachment:yes:含附件
组合符:
- AND:两个条件都满足
- OR:任一条件满足
- 括号用于分组
OData 过滤器语法
邮件过滤器:
- isRead eq false:未读邮件
- importance eq 'high':高重要性
- hasAttachments eq true:含附件
- receivedDateTime ge 2025-01-01T00:00:00Z:日期过滤
日历过滤器:
- start/dateTime ge '2025-01-01T00:00:00Z':日期之后的事件
- contains(subject, 'Meeting'):主题包含文本
已知限制
账户类型:
- SEARCH_MESSAGES 需要 Microsoft 365/企业账户。
- 个人账户(@hotmail.com、@outlook.com)API 访问受限。
字段混淆:
- 邮件属性(receivedDateTime)与日历属性(start/dateTime)不同。
- 不要在日历查询中使用邮件字段,反之亦然。
快速参考
| 任务 | 工具 Slug | 关键参数 |
|---|---|---|
| 搜索邮件 | OUTLOOK_SEARCH_MESSAGES | query, from_index, size |
| 查询文件夹 | OUTLOOK_QUERY_EMAILS | folder, filter, top |
| 获取邮件 | OUTLOOK_GET_MESSAGE | message_id |
| 列出附件 | OUTLOOK_LIST_OUTLOOK_ATTACHMENTS | message_id |
| 下载附件 | OUTLOOK_DOWNLOAD_OUTLOOK_ATTACHMENT | message_id, attachment_id |
| 列出文件夹 | OUTLOOK_LIST_MAIL_FOLDERS | (无) |
| 子文件夹 | OUTLOOK_LIST_CHILD_MAIL_FOLDERS | parent_folder_id |
| 列出事件 | OUTLOOK_LIST_EVENTS | filter, timezone |
| 日历视图 | OUTLOOK_GET_CALENDAR_VIEW | start_datetime, end_datetime |
| 获取事件 | OUTLOOK_GET_EVENT | event_id |
| 列出日历 | OUTLOOK_LIST_CALENDARS | (无) |
| 空闲/忙碌 | OUTLOOK_GET_SCHEDULE | schedules, times |
| 列出联系人 | OUTLOOK_LIST_CONTACTS | top, filter |
| 创建联系人 | OUTLOOK_CREATE_CONTACT | givenName, emailAddresses |
| 联系人文件夹 | OUTLOOK_GET_CONTACT_FOLDERS | (无) |