关于 microsoft-outlook
microsoft-outlook 是一个通过 Microsoft Graph 管理用户 Outlook 邮件、日历和个人联系人的 agentskills.io 技能。其脚本涵盖邮件搜索与处理、文件夹和附件、日历事件及联系人记录。
主要功能
- 01搜索、读取、撰写和发送邮件
- 02回复、转发和整理邮件
- 03浏览文件夹及邮件附件
- 04列出和管理日历事件
- 05搜索和管理个人联系人
适用场景
- 01查找并阅读邮箱中的邮件
- 02起草或发送回复并整理邮件
- 03查看或更新指定日期范围内的事件
- 04查找或更新个人联系人信息
MCP 相关
对于支持 MCP 的客户端,该技能可使用已加载的工具,也可注册为本地 MCP 服务。它向 MCP 客户端提供 Outlook 邮件、文件夹、附件、日历及联系人的操作工具。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ zapier/ connectors --skill microsoft-outlook安装后在 Claude Code 中输入/microsoft-outlook确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.mcp.jsonCHANGELOG.mdcli.jscli.tsconnections.tsindex.tsLICENSENOTICENOTICE.mdpackage.jsonREADME.md.claude-plugin/plugin.jsonevals/evals.jsonresults.mdlib/graph.tsschemas.tsreferences/microsoft-outlook-api-gotchas.mduse-as-cli.mduse-as-mcp.mduse-as-recipe.mduse-as-sdk.mduse-with-zapier.mduse-without-zapier.mdscripts/copyMessage.tscreateContact.tscreateDraft.tscreateEvent.tscreateMailFolder.tscreateReplyDraft.tsdeleteContact.ts详细介绍
Microsoft Outlook
针对单个用户的 Outlook 邮箱提供工具,使用 Microsoft Graph API v1.0(https://graph.microsoft.com/v1.0/):读取和搜索邮件、撰写/发送/回复/转发邮件、整理邮件(已读状态、标记、重要性、类别、移动、复制、删除)、浏览邮件文件夹和附件、管理日历事件,以及管理个人联系人。包含 30 个脚本,涵盖个人资料、邮件、文件夹、类别、日历和联系人。所有调用均使用同一个 OAuth bearer token 进行授权。
这是一个独立的非官方 Microsoft Outlook 连接器,与 Microsoft Outlook 无关联,也未获其认可或赞助。“Microsoft Outlook”是其所有者的商标,在此仅用于标识此连接器所连接的服务。
何时使用
- Agent 需要读取或搜索邮件——按文件夹、KQL 或 OData 筛选条件列出/搜索邮件、读取完整邮件,以及列出和下载附件。
- Agent 需要发送或回复邮件——撰写并发送邮件、创建草稿并稍后发送、回复/回复所有人,或转发邮件。
- Agent 需要整理邮件——将邮件标记为已读/未读、添加标记、设置重要性、分类、移动、复制或删除邮件;浏览和创建邮件文件夹。
- Agent 需要处理日历或联系人——列出日历、列出事件或查看某个日期范围内的事件、创建/更新/删除事件,以及创建/读取/更新/删除个人联系人。
设置
这是一个 agentskills.io 技能。
如果尚未将此连接器安装为技能,请先使用 npx skills add zapier/connectors --skill microsoft-outlook 安装(或使用你所用运行框架提供的技能安装机制),然后继续操作。安装技能会复制这些文件,不会安装依赖项。运行 CLI、本地 MCP 服务或 zapier-sdk 身份验证命令之前,请先在此处运行一次 npm install --omit=dev。如果要在自己的项目中将已发布的包作为依赖项导入?npm install 已会解析所有依赖项——请参阅 references/use-as-sdk.md。
如果你需要实际的仓库源码——以浏览 references/、运行此连接器的测试或修改代码,请参阅 README.md,了解如何进行范围限定的 git clone。
此连接器需要 Node.js 22.18+。选择与你的运行方式相符的参考文档,并在执行其他操作前先加载:
| 你拥有…… | 加载 |
|---|---|
支持 MCP 的客户端——工具可能已加载(例如 mcp__microsoft-outlook__<tool>),或者你可以自行注册本地服务(也可以引导用户注册) | references/use-as-mcp.md |
终端/子进程访问权限(可以运行 node) | references/use-as-cli.md |
| 只有自己的代码,并将此包作为依赖项导入 | references/use-as-sdk.md |
| 无工具访问权限、无终端,也无法导入此包——你要编写自己的代码,直接调用 Microsoft Outlook API(例如在代码执行沙箱中) | references/use-as-recipe.md |
脚本
所有脚本都使用单一连接 microsoft-outlook。邮件和日历脚本接受可选的 mailbox 输入,用于操作共享邮箱;六个事件脚本接受可选的 calendarId(通过 listCalendars 获取)。
| Script | Script name | Connections | Description |
|---|---|---|---|
scripts/getMe.ts | getMe | microsoft-outlook | 获取已登录用户的个人资料(姓名、电子邮件、UPN)。解析“我的电子邮件”。 |
scripts/sendMail.ts | sendMail | microsoft-outlook | 一步完成撰写并发送电子邮件(不返回 ID)。 |
scripts/createDraft.ts | createDraft | microsoft-outlook | 创建电子邮件草稿;返回供 sendDraft 使用的草稿 ID。 |
scripts/sendDraft.ts | sendDraft | microsoft-outlook | 根据 ID 发送现有草稿。 |
scripts/replyToMessage.ts | replyToMessage | microsoft-outlook | 回复(或回复所有人)并立即发送。 |
scripts/createReplyDraft.ts | createReplyDraft | microsoft-outlook | 创建回复草稿(或回复所有人),以便发送前编辑。 |
scripts/forwardMessage.ts | forwardMessage | microsoft-outlook | 将邮件转发给新的收件人并立即发送。 |
scripts/updateMessage.ts | updateMessage | microsoft-outlook | 更新邮件的已读状态、标记、重要性或类别。 |
scripts/moveMessage.ts | moveMessage | microsoft-outlook | 将邮件移至其他文件夹(返回新的 ID)。 |
scripts/copyMessage.ts | copyMessage | microsoft-outlook | 将邮件复制到其他文件夹,并保留原邮件。 |
scripts/deleteMessage.ts | deleteMessage | microsoft-outlook | 删除邮件(将其移至“已删除邮件”;可撤销)。 |
scripts/listMessages.ts | listMessages | microsoft-outlook | 按最新优先列出或搜索邮件(用于解析 ID 的入口)。 |
scripts/getMessage.ts | getMessage | microsoft-outlook | 根据 ID 获取单封邮件,包括完整正文。 |
scripts/listAttachments.ts | listAttachments | microsoft-outlook | 列出邮件的附件。 |
scripts/getAttachment.ts | getAttachment | microsoft-outlook | 根据 ID 获取单个附件,包括其 base64 内容。 |
scripts/listMailFolders.ts | listMailFolders | microsoft-outlook | 列出邮件文件夹(顶层文件夹或某个文件夹的子文件夹)。 |
scripts/createMailFolder.ts | createMailFolder | microsoft-outlook | 创建邮件文件夹(顶层文件夹或子文件夹)。 |
scripts/listCategories.ts | listCategories | microsoft-outlook | 列出邮箱的类别名称和颜色。 |
scripts/listCalendars.ts | listCalendars | microsoft-outlook | 列出用户的日历(解析 calendarId)。 |
scripts/listEvents.ts | listEvents | microsoft-outlook | 列出事件和重复系列的主事件。 |
scripts/listCalendarView.ts | listCalendarView | microsoft-outlook | 列出日期范围内的事件,并展开重复事件(“我的日历上有什么”)。 |
scripts/getEvent.ts | getEvent | microsoft-outlook | 根据 ID 获取单个事件(与会者、正文、重复规则)。 |
scripts/createEvent.ts | createEvent | microsoft-outlook | 创建日历事件。 |
scripts/updateEvent.ts | updateEvent | microsoft-outlook | 更新事件字段或与会者(与会者列表将被替换)。 |
scripts/deleteEvent.ts | deleteEvent | microsoft-outlook | 删除(取消)日历事件。 |
scripts/listContacts.ts | listContacts | microsoft-outlook | 列出或搜索个人联系人。 |
scripts/getContact.ts | getContact | microsoft-outlook | 根据 ID 获取单个个人联系人。 |
scripts/createContact.ts | createContact | microsoft-outlook | 创建个人联系人。 |
scripts/updateContact.ts | updateContact | microsoft-outlook | 更新个人联系人的字段(数组字段将被替换)。 |
scripts/deleteContact.ts | deleteContact | microsoft-outlook | 根据 ID 删除个人联系人。 |
歧义处理与拒绝
写入前先消除歧义。 对通过名称/主题查找到的联系人、事件或邮件采取操作之前(例如,通过 listContacts 找到联系人后更新,或通过 listEvents 找到事件后回复),请统计名称/主题不区分大小写的完全匹配项:
- 恰好匹配一项 — 对其执行操作。不要过度追问;唯一明确的匹配项就是答案。
- 匹配两项或更多,且无法区分 — 停止操作。列出这些候选项及其区分字段(联系人的
emailAddresses/companyName、事件的start/organizer、邮件的from/receivedDateTime),并询问用户指的是哪一项。不要随意选择,也不要对所有匹配项执行写入操作。
不支持的操作 — 说明后停止;不要用其他工具伪装实现。 本目录明确不支持以下操作:
- 监控新邮件或事件(触发器)。 没有“有新邮件时通知我”或轮询工具;此连接器仅支持请求/响应。不要通过反复调用
listMessages来模拟订阅并声称已订阅。 - 发送超过 3 MB 的附件。 仅支持小于 3 MB 的内嵌附件;不支持大型文件上传会话。不要声称已发送大型文件。
- 访问群组/共享_日历_或通讯组列表。 不提供群组日历和目录群组。(共享_邮箱_可通过
mailbox输入访问。) - 永久删除邮件(
deleteMessage是可撤销的移至“已删除邮件”操作),也不支持管理邮箱规则、自动回复或重点收件箱设置。
如果用户要求执行以上任何操作,请告知用户不支持,然后停止 — 不要尝试调用无关工具来近似实现。
身份验证
每种形态都将身份验证信息作为一个连接选择器传递,而非密钥 — 格式为 [<resolver>:]<value> 字符串。每个连接器都接受 zapier:<connection-id>(由 Zapier 管理的身份验证 — 通过 Zapier 的身份验证、重试和治理层进行路由);有些连接器还接受一个或多个直接令牌解析器(名称和数量因连接器而异)— 请查看此连接器自身的解析器,不要想当然。<resolver>: 前缀可省略;裸值会交给第一个认领它的解析器 — 符合 UUID 格式的裸值始终由 zapier: 认领。每个脚本都会声明所需的连接及其接受的解析器。传递连接的确切语法(以及如何查看此连接器的解析器列表)因形态而异 — 请参阅上方加载的参考文档。
想先检查已配置的连接?不要为此转储环境变量值 — env 或 env | grep <name> 会连同名称一起打印值;如果设置了值,就会将有效凭据泄露到对话记录中。只检查名称(env | cut -d= -f1 | grep -i <name>),或直接测试已知名称([ -n "$VAR_NAME" ])。
还没有连接?选择一种方式 — 并按照相应参考文档中的流程获取连接;不要直接向用户索要连接 ID 或令牌,仿佛他们早已记住这些信息:
| 加载 | |
|---|---|
| 直接传递凭据 | references/use-without-zapier.md |
| 通过 Zapier 连接进行路由 | references/use-with-zapier.md |
输出格式
每个脚本都会返回一个 { data, meta } 封装:
data— 脚本的结果(其形状由outputSchema声明;有关如何检查形状对应的脚本确切架构,请参阅你上面加载的参考文件)。meta.outputDataValidation— 对data进行验证的结果:{ skipped: false, droppedPaths: null }— 已验证,未移除任何内容。{ skipped: false, droppedPaths: [...], instruction }— 已验证,但这些路径已从data中剥离:脚本从 API 返回、但outputSchema未声明的字段。如果需要这些字段,请跳过输出验证后重新运行。{ skipped: true }— 已绕过验证;data是未经检查的脚本原始输出。
读取已剥离的字段 / skipOutputDataValidation。 如需接收未经验证的原始结果,请选择退出输出验证(具体语法因形状而异;请参阅你上面加载的参考文件)。输入验证永远不会跳过。
精简结果 / filterOutputData。 如需将大型结果缩减为所需字段,请传入一个 jq 表达式,对 data 进行后处理(具体语法同样因形状而异)。jq 仅针对 data 运行,而非 { data, meta } 封装,因此表达式应以 data 为根(运行脚本的 --help,或形状对应的命令,查看其输出架构)。转换后的值会替换 data,meta 保持不变,且结果不会再根据输出架构进行验证。
参考资料
在相应领域工作前,请加载匹配的参考文件:
| 参考资料 | 涵盖内容 | 在以下情况下加载 |
|---|---|---|
references/microsoft-outlook-api-gotchas.md | API 错误恢复(401/403/404/413/429)、移动后的 ID 稳定性、分页、search 与 filter 的区别、附件(3 MB 限制)、全天/在线事件、日期时间与时区、联系人最多 3 个电子邮件地址、类别。 | 调用出错且需要恢复指导、移动后某个 ID 无法再解析,或不确定分页、search 与 filter 的区别、附件、全天/在线事件、日期时间与时区、联系人最多 3 个电子邮件地址或类别的行为时。 |