Guide
Outlook CLI:在终端中列出邮件(无需 Graph API)
使用 Outlook CLI 在终端中读取、搜索和过滤 Microsoft 365 邮件。直接使用 Graph API 需要 Azure AD 应用注册、MSAL 令牌、权限和重试逻辑。Nylas CLI 将这些设置封装在一条命令中,并在受支持的服务商之间使用相同的工作流。
Written by Nick Barraclough Product Manager
Reviewed by Qasim Muhammad
如何使用 Outlook CLI 在终端中读取邮件?
连接 Outlook 或 Microsoft 365 邮箱后,使用 nylas email list、nylas email search 和 nylas email read。CLI 提供终端 Outlook 工作流,无需注册 Azure AD 应用或编写 Microsoft Graph API 代码。
对于 Outlook 邮件命令行工作流,这意味着用一组命令即可在 Outlook.com 和 Microsoft 365 账户之间列出、搜索和阅读邮件。
根据 Microsoft FY2024 财报,Microsoft 365 拥有超过 4 亿付费席位。它是全球部署最广泛的商务邮件平台。然而从命令行读取自己的收件箱却需要大量的设置工作。
自从 Microsoft 在 2022 年 10 月弃用 Exchange Online 的 Basic Auth 以来,Graph API 是唯一受支持的路径。仅发起一个 GET /me/messages 调用,你就需要在 Azure AD 中注册应用、配置 Mail.Read 权限、实现带刷新处理的 MSAL 令牌获取,并解析 Microsoft 的专有 JSON 格式(非标准 MIME)。根据 Microsoft 的 Graph API 限流指南,每个邮箱限制为每 10 分钟 10,000 个请求——因此你还需要 429 响应的重试逻辑。
EWS(Exchange Web Services)仍然存在,但 Microsoft 已宣布将于 2026 年 10 月弃用 Exchange Online 的 EWS(公告 MC862873)。az CLI 没有邮件命令。PowerShell 的 Get-MailboxFolderPermission 需要 Exchange Online 管理模块和管理员访问权限。这些都无法提供简洁、可移植的工作流。
1. 列出、搜索和阅读邮件
Nylas CLI 提供三个邮件子命令——list、search 和 read——覆盖 8 个不同 Graph API 端点的相同功能。每个命令在典型邮箱中不到 1 秒返回结果。list 命令默认显示最近的消息,而 search 接受关键词、发件人和日期范围过滤器,映射到 Outlook 的服务器端搜索索引。
以下示例展示了列出、过滤和阅读 Outlook 邮件的常见模式。--limit 标志控制返回的结果数量,--unread 将输出限制为未读消息。
# 最近的邮件
nylas email list
nylas email list --limit 10
nylas email list --unread
# 按关键词、发件人或日期范围搜索
nylas email search "quarterly report" --limit 5
nylas email search "from:manager@company.com"
nylas email search "after:2026-01-01 before:2026-02-01"
# 阅读特定消息(ID 在列表输出中显示)
nylas email read msg_abc123
nylas email read msg_abc123 --mime2. 用于脚本编写的 JSON 输出
每个 Nylas CLI 邮件命令都接受 --json 标志,输出标准化 JSON 而非默认的表格视图。这种 JSON 格式在所有 6 个支持的服务商之间保持一致——Gmail、Outlook、Exchange、Yahoo、iCloud 和 IMAP——因此为一个服务商编写的脚本可以在另一个上无修改运行。输出可直接管道到 jq、shell 脚本或 AI 智能体工具使用流程。
以下示例展示三种常见的脚本模式:统计未读消息、提取主题行,以及过滤来自 Microsoft Teams 和 SharePoint 的自动通知。Microsoft 365 账户通常仅从 Teams 就每天收到 15-30 封自动通知邮件,使得程序化过滤对收件箱分析非常有用。
# 统计未读邮件
nylas email list --unread --json | jq length
# 提取主题
nylas email list --limit 5 --json | jq '.[].subject'
# 过滤 Teams/SharePoint 通知
nylas email list --json \
| jq '[.[] | select(.from[0].email | test("teams|sharepoint"; "i"))]' \
| jq length3. 重点收件箱 vs 其他
Outlook 的重点收件箱使用机器学习将重要消息与低优先级消息分离,Microsoft 报告称它可以将活跃用户的邮件分类时间减少多达 50%。Graph API 通过 inferenceClassification 属性暴露此分类,但访问它需要单独的 $filter 参数且不映射到标准文件夹。Nylas CLI 直接暴露 Outlook 的文件夹结构,你可以列出任何文件夹中的消息,包括重点、收件箱、已发送邮件和垃圾邮件。
nylas email folders list 命令显示邮箱中的每个文件夹,包括 Outlook 自动创建的系统文件夹。nylas email list 上的 --folder 标志按名称过滤到单个文件夹。
# 列出所有文件夹——重点收件箱显示为文件夹属性
nylas email folders list
# 列出特定 Outlook 文件夹中的邮件
nylas email list --folder "Inbox"
nylas email list --folder "Sent Items"
nylas email list --folder "Archive"
nylas email list --folder "Junk Email"
nylas email list --folder "Drafts"4. 共享邮箱和委托访问
共享邮箱是 Microsoft 365 组织中的常见模式——Microsoft 的文档估计平均企业租户有 5-10 个共享邮箱,用于 support@ 或 billing@ 等团队别名。通过 Graph API 访问共享邮箱需要 GET /users/{id}/messages 加 Mail.Read.Shared 权限和租户管理员同意。Nylas CLI 通过将每个共享邮箱视为单独的 grant 来简化这一过程,你可以用相同的命令在个人和共享邮箱之间切换。
在 Nylas Dashboard 中将共享邮箱作为单独的 grant 连接。然后使用 nylas auth list 查看所有已连接的邮箱,并将 grant ID 传递给任何邮件命令。委托访问的工作方式相同。
# 列出 grant 以查看所有已连接的邮箱
nylas auth list
# 使用共享邮箱(作为单独的 grant 连接)
nylas email list <shared-mailbox-grant-id>5. Outlook 类别和标记
Outlook 支持每条消息最多 25 个颜色编码类别和后续标记——这些功能在 Gmail 或 Yahoo Mail 中没有对应物。根据 Microsoft 的生产力研究,类别是企业 Outlook 部署中最常用的组织功能之一。Graph API 以字符串数组形式在每个消息对象上返回类别,但按类别过滤需要构建 OData $filter 表达式。Nylas CLI 通过其搜索语法暴露类别过滤。
搜索命令直接接受类别名称。你还可以将类别过滤器与发件人和关键词查询结合,或将 JSON 输出管道到 jq 生成自定义的基于类别的报告。
# 搜索具有特定类别的邮件
nylas email search "category:Red"
# 将类别与其他过滤器结合
nylas email search "category:Blue from:cfo@company.com" --limit 10
# 将分类邮件导出为 JSON 用于报告
nylas email list --json | jq '[.[] | select(.categories[]? == "Project Alpha")]'6. Microsoft Graph API vs Nylas CLI
Microsoft Graph API 至少需要 40 行代码和 4 个单独的配置步骤才能列出 Outlook 邮箱中的邮件。Nylas CLI 将其减少为一条命令,零应用代码。下表逐步对比,Graph API 的详细信息来自 Microsoft Learn 文档中 /me/messages 端点的说明。
| 步骤 | Microsoft Graph API | Nylas CLI |
|---|---|---|
| 注册应用 | Azure AD 应用注册(portal.azure.com) | 不需要 |
| 权限 | Mail.Read 范围 + 组织账户需管理员同意 | 由 Nylas Dashboard 处理 |
| 认证流程 | MSAL 库、令牌获取、刷新处理 | nylas init |
| 代码 | REST 调用或 MS Graph SDK——至少 40+ 行 | 零代码 |
| 列出邮件 | 带 Bearer 令牌的 GET /me/messages | nylas email list |
| 响应格式 | Microsoft 专有 JSON(非 MIME) | 跨所有服务商的标准化 JSON |
| 分页 | 手动跟踪 @odata.nextLink | --limit 标志 |
| 搜索 | $search 或 $filter OData 参数 | nylas email search "query" |
| 速率限制 | 每邮箱 10,000 请求/10 分钟——自行处理 429 | 自动处理带退避 |
| 共享邮箱 | Mail.Read.Shared + 管理员同意 | 单独的 grant,相同命令 |
7. Microsoft 365 部署注意事项
Microsoft 365 租户有组织级别的策略,可能影响外部工具连接邮箱的方式。这些策略适用于所有 4 亿+ 付费席位,并因行业而异——医疗和政府租户执行比大多数商业部署更严格的条件访问。以下问题特定于 Microsoft 365,不适用于个人 Outlook.com 账户。
- 条件访问策略——如果你的组织强制设备合规性或 IP 限制,IT 管理员可能需要将 Nylas 连接加入白名单
- GCC 和 GCC High 租户——美国政府云租户使用单独的 Graph API 端点;连接前请与管理员确认
- 保留策略——Microsoft 365 合规保留策略可能阻止消息删除,即使 CLI 命令成功。消息在同步后重新出现
- Teams 和 SharePoint 通知——使用
nylas email search "from:noreply@email.teams.microsoft.com"过滤
后续步骤
- 通过 CLI 发送 Outlook 邮件——从 Outlook 账户发送、定时和格式化消息
- 邮件 CLI 工具对比——将 Outlook CLI 工作流与终端邮件客户端和 SMTP 工具对比
- AI 智能体 CLI(邮件和日历)——将 Outlook 邮件和日历命令作为 JSON 工具暴露
- 通过 CLI 管理 Outlook 日历——创建事件、检查可用性、预订会议室
- 面向 AI 智能体的 Outlook MCP 服务器——对比 Microsoft 365 连接器、Graph API 工具和本地 CLI MCP
- 从终端发送邮件——发送、定时和跟踪邮件
- 列出 Gmail 邮件——Google 的相同工作流
- 列出 Yahoo Mail 邮件——Yahoo 的相同工作流
- 列出 iCloud Mail 邮件——Apple 的相同工作流
- 列出 IMAP 邮件——适用于 Fastmail、Zoho 等
- 列出 Exchange 邮件——Exchange 的相同工作流
- 通过 MCP 赋予 AI 智能体邮件访问权限——将 Claude、Cursor 或 VS Code 连接到你的收件箱
- 在终端管理共享邮箱——通过 grant 切换在个人和团队收件箱之间切换
- Outlook CLI:管理邮件和日历——从终端使用 Outlook 的中心指南
- 入门指南——安装 CLI 并连接你的第一个账户
- 完整命令参考——每个标志和子命令的文档
- Microsoft Graph:列出消息 — Outlook / Microsoft 365 邮件列表的标准端点
- Microsoft Graph:OData 查询参数 — CLI 标志背后的 $filter、$search 和 $select 语义
- Microsoft Graph:限流指南 — CLI 退避机制所针对的每 10 分钟 10,000 个请求的邮箱限制