如何从Microsoft个人账户获取群组列表并调用API发送群组消息
实现方案总览
你需要的功能可以通过Microsoft Graph API实现,支持个人Microsoft账户读取已加入的群组列表、向Teams群组/Outlook邮件群组发送消息,具体实现流程如下:
前置准备:Azure应用注册
调用接口前需要先完成应用注册获取访问凭证:
- 登录Azure门户进入应用注册界面,创建新应用,账户类型选择「仅个人Microsoft账户用户」
- 注册完成后记录客户端ID(client_id),配置重定向URI,本地调试可填写
http://localhost - 配置所需的委托权限:
- 读取群组列表:
Group.Read.All - 向Teams群组发消息:
ChatMessage.Send、Teamwork.Messaging.Send - 向Outlook邮件群组发邮件:
Mail.Send
- 读取群组列表:
步骤1:获取个人账号的群组列表
调用Microsoft Graph的已加入群组查询接口,请求格式如下:GET https://graph.microsoft.com/v1.0/me/joinedGroups
可以附加$filter参数筛选特定类型的群组,返回结果会包含群组ID、群组名称、群组类型、群组邮件地址等核心字段,你可以提取需要发送消息的群组ID/邮件地址留存备用。
注意:个人Microsoft账户只能拉取你本人已经加入的群组,无法查询未加入的群组列表
步骤2:向对应群组发送消息
根据你使用的群组类型选择对应的接口:
场景1:向Teams群组发送频道消息
请求方法为POST,接口格式为https://graph.microsoft.com/v1.0/teams/{替换为你的群组ID}/channels/{替换为对应频道ID}/messages,请求体示例:
{ "body": { "content": "你要发送的消息内容,支持HTML格式" } }
如果需要@指定用户,可以额外添加mentions字段配置@对象信息。
场景2:向Outlook邮件群组发送邮件
请求方法为POST,接口为https://graph.microsoft.com/v1.0/me/sendMail,请求体中将收件人设置为群组邮件地址即可,示例:
{ "message": { "subject": "邮件主题", "body": { "contentType": "Text", "content": "邮件正文内容" }, "toRecipients": [ { "emailAddress": { "address": "替换为群组的邮件地址" } } ] } }
实现建议
- 优先使用OAuth 2.0授权码流获取访问令牌,不要使用密码授权流,避免账号密码泄露风险
- 调用接口前可以先校验访问令牌的
scp字段,确认所需权限已经被正确授予 - 接口有调用频率限制,短时间内大量发送消息会触发限流,建议做好请求间隔控制和失败重试逻辑
- 本地调试阶段可以直接用Microsoft Graph Explorer工具测试接口正确性,不用提前开发授权逻辑,调试通后再做代码集成
内容的提问来源于stack exchange,提问作者Dimple Munjani
相关产品推荐
相关产品推荐

