You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需使用Graph API读取Office 365邮件的可行方案咨询

Office 365邮件读取实现方案

目前没有完全脱离身份验证框架、仅靠原始用户名密码直接走传统IMAP基本认证的方案,微软已经在2022年全量禁用了Office 365所有邮件相关协议的基本身份验证,但可以通过以下不需要组织管理员权限的方案实现需求,操作全程仅需要你自己的账号登录授权,无需获取组织租户ID:

方案1:沿用IMAP协议(兼容原有开发逻辑)

你可以搭配OAuth2身份验证继续使用IMAP协议读取邮件,步骤如下:

  • 自行注册Azure AD多租户应用:使用你自己的Office 365账号登录Azure后台注册应用,类型选择「个人账户和任何组织目录中的账户」,无需填写组织租户信息
  • 给应用添加IMAP.AccessAsUser.All委托权限,该权限属于用户可自行授权的范围,不需要组织管理员审批
  • 身份验证通过后,即可用常规IMAP库连接outlook.office365.com的993端口读取邮件,逻辑和之前使用IMAP基本一致,仅替换身份验证环节即可

Python参考代码片段:

import msal
import imaplib

# 通用多租户端点,不需要填租户ID
authority = "https://login.microsoftonline.com/common"
app = msal.PublicClientApplication("你的应用客户端ID", authority=authority)
# 用户名密码流获取token
result = app.acquire_token_by_username_password(
    "你的邮箱地址",
    "你的邮箱密码",
    scopes=["https://outlook.office.com/IMAP.AccessAsUser.All"]
)
# 连接IMAP
imap = imaplib.IMAP4_SSL("outlook.office365.com", 993)
imap.authenticate("XOAUTH2", lambda x: f"user={你的邮箱地址}\x01auth=Bearer {result['access_token']}\x01\x01".encode())

C#可以搭配MailKit和Microsoft.Identity.Client库实现相同逻辑。

方案2:使用Graph API委托权限模式

如果可以调整原有实现逻辑,直接用Graph API更简单:

  • 同样注册多租户Azure应用,添加Mail.Read委托权限,无需管理员同意
  • 支持用户名密码流或者设备代码流登录,使用common通用端点不需要租户ID,验证通过后即可调用接口读取邮件。

注意:如果你的组织开启了条件访问策略禁用了用户名密码流,改用设备代码流即可,仅需要你在浏览器端登录自己的账号完成授权,全程不需要管理员介入。

内容的提问来源于stack exchange,提问作者Sandeep Bhutani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:36:06