如何使用Microsoft Graph最新版本查询邮箱包含/后缀匹配特定序列的用户?
在Microsoft Graph中查询邮箱匹配特定规则的用户
要一次性获取所有邮箱符合你指定规则的用户数组,直接用Microsoft Graph的$filter参数结合OData字符串函数就能实现,不需要逐个查询用户。下面分两种场景给出具体的查询语句:
场景1:邮箱包含特定字符序列
对应你代码里的users.Where(x => x.Contains(str))逻辑,使用OData的contains函数即可:
GET https://graph.microsoft.com/v1.0/users?$filter=contains(mail,'{你的特定字符序列}')&$select=id,mail,displayName
contains(mail,'xxx'):匹配所有邮箱字段中包含xxx的用户$select:可选参数,用来指定返回的用户字段(比如id、邮箱、显示名称),避免返回不必要的冗余数据,提升响应效率- 响应的JSON里,
value字段就是符合条件的用户数组
场景2:邮箱以特定字符序列结尾
对应你代码里的users.Where(x => x.EndsWith(str))逻辑,使用OData的endsWith函数:
GET https://graph.microsoft.com/v1.0/users?$filter=endsWith(mail,'{你的特定字符序列}')&$select=id,mail,displayName
endsWith(mail,'xxx'):匹配所有邮箱字段以xxx结尾的用户- 同样,
$select可以按需调整返回字段
一些注意事项
- 权限要求:确保你的应用已被授予
User.Read.All(读取所有用户信息)或User.ReadBasic.All(仅读取用户基本信息)的权限,否则会返回权限不足的错误 - 大小写敏感性:Microsoft Graph的OData字符串函数默认是大小写不敏感的,所以不需要额外处理大小写匹配的问题
- 分页处理:如果符合条件的用户数量较多(超过100个),Graph会自动分页,响应里会包含
@odata.nextLink字段,你可以通过这个链接获取下一页的结果
内容的提问来源于stack exchange,提问作者UberFace
相关产品推荐
相关产品推荐

