Guide

Outlook CLI:在终端中列出邮件(无需 Graph API)

使用 Outlook CLI 在终端中读取、搜索和过滤 Microsoft 365 邮件。直接使用 Graph API 需要 Azure AD 应用注册、MSAL 令牌、权限和重试逻辑。Nylas CLI 将这些设置封装在一条命令中,并在 Gmail、Exchange、Yahoo、iCloud 和 IMAP 上使用相同的工作流。

Written by Nick Barraclough Product Manager

Reviewed by Qasim Muhammad

VerifiedCLI 3.1.1 · Outlook.com, Microsoft 365 · last tested April 11, 2026

如何使用 Outlook CLI 在终端中读取邮件?

连接 Outlook 或 Microsoft 365 邮箱后,使用 nylas email listnylas email searchnylas 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 并连接 Outlook 账户不到 2 分钟。CLI 通过 API 密钥认证,无需注册 Azure AD 应用、配置 MSAL 或自行处理令牌刷新。一条 brew install 命令加一次 API 密钥粘贴,即可从零开始列出邮件。

Homebrew 是 macOS 和 Linux 上最快的安装路径。该 formula 自动拉取最新发布的二进制文件并验证 SHA-256 校验和。

# 通过 Homebrew 安装(macOS / Linux)
brew install nylas/nylas-cli/nylas

其他安装方式(shell 脚本、PowerShell、Go)请参见 入门指南

安装后,前往 dashboard-v3.nylas.com,创建应用并连接你的 Microsoft 365 或 Outlook.com 账户。Dashboard 处理 OAuth2 授权和令牌存储。然后使用 API 密钥配置 CLI:

nylas auth config
# 提示时粘贴你的 API 密钥

nylas auth whoami
# => Authenticated as you@company.com (Microsoft)

2. 列出、搜索和阅读邮件

Nylas CLI 提供三个邮件子命令——listsearchread——覆盖 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 --mime

3. 用于脚本编写的 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 length

4. 重点收件箱 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"

5. 共享邮箱和委托访问

共享邮箱是 Microsoft 365 组织中的常见模式——Microsoft 的文档估计平均企业租户有 5-10 个共享邮箱,用于 support@ 或 billing@ 等团队别名。通过 Graph API 访问共享邮箱需要 GET /users/{id}/messagesMail.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>

6. 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")]'

7. Microsoft Graph API vs Nylas CLI

Microsoft Graph API 至少需要 40 行代码和 4 个单独的配置步骤才能列出 Outlook 邮箱中的邮件。Nylas CLI 将其减少为一条命令,零应用代码。下表逐步对比,Graph API 的详细信息来自 Microsoft Learn 文档中 /me/messages 端点的说明。

步骤Microsoft Graph APINylas CLI
注册应用Azure AD 应用注册(portal.azure.com)不需要
权限Mail.Read 范围 + 组织账户需管理员同意由 Nylas Dashboard 处理
认证流程MSAL 库、令牌获取、刷新处理nylas auth config
代码REST 调用或 MS Graph SDK——至少 40+ 行零代码
列出邮件带 Bearer 令牌的 GET /me/messagesnylas email list
响应格式Microsoft 专有 JSON(非 MIME)跨所有服务商的标准化 JSON
分页手动跟踪 @odata.nextLink--limit 标志
搜索$search$filter OData 参数nylas email search "query"
速率限制每邮箱 10,000 请求/10 分钟——自行处理 429自动处理带退避
共享邮箱Mail.Read.Shared + 管理员同意单独的 grant,相同命令

8. 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" 过滤

后续步骤