如何使用Microsoft Graph API从Outlook目录联系人文件夹获取联系人?
解决Outlook Directory联系人的Microsoft Graph API获取方案
首先要明确:Outlook中的「Directory」对应的是**组织的全局地址列表(GAL)**或租户级目录联系人,不属于用户个人邮箱下的联系人文件夹,所以/me/contactfolders这类针对个人联系人文件夹的API自然无法获取到它的内容。以下是具体的解决方法:
一、直接可用的Graph API
1. 获取组织内用户联系人(Directory中的内部人员)
如果Directory里的联系人主要是组织内部用户,直接使用用户列表API:
GET https://graph.microsoft.com/v1.0/users
可以通过筛选器缩小范围,比如获取某部门的用户:
GET https://graph.microsoft.com/v1.0/users?$filter=department eq '市场部'
2. 获取组织的外部联系人(Directory中的外部人员)
针对组织添加的外部联系人(非内部用户),使用目录联系人API:
GET https://graph.microsoft.com/v1.0/directoryContacts
同样支持筛选,比如按公司名称过滤:
GET https://graph.microsoft.com/v1.0/directoryContacts?$filter=companyName eq 'XX科技'
3. 全局搜索目录联系人(含内部+外部)
如果需要搜索整个Directory中的联系人(包括内部用户和外部联系人),使用people API,它会返回匹配的目录条目:
GET https://graph.microsoft.com/v1.0/me/people?$search="张三"
该API还支持通过$select指定返回字段,比如只获取姓名和邮箱:
GET https://graph.microsoft.com/v1.0/me/people?$search="张三"&$select=displayName,emailAddresses
二、替代方案(复杂场景)
如果需要完全复刻Outlook Directory文件夹的展示逻辑(比如分组、自定义属性),可以结合以下步骤:
- 调用
/users获取内部用户,调用/directoryContacts获取外部联系人 - 在应用层合并两类数据,根据需求进行分组、排序或筛选
- 如果需要同步更新,可以订阅
users和directoryContacts的变更通知,实时同步数据
内容的提问来源于stack exchange,提问作者Vickram
相关产品推荐
相关产品推荐

