Microsoft graph api Microsoft Graph-检索无效的联系人电子邮件地址

Microsoft graph api Microsoft Graph-检索无效的联系人电子邮件地址,microsoft-graph-api,Microsoft Graph Api,如果Office 365联系人的电子邮件地址无效(例如:user@example?com),如何使用Microsoft Graph检索电子邮件地址 我试过/contacts和/contacts/{id}。第一个返回一个空的地址: "emailAddresses": [ { "name": "name", "address": "" } ] 第二个简单地省略了它: "emailAddresses": [ {

如果Office 365联系人的电子邮件地址无效(例如:
user@example?com
),如何使用Microsoft Graph检索电子邮件地址

我试过
/contacts
/contacts/{id}
。第一个返回一个空的
地址

 "emailAddresses": [
     {
         "name": "name",
         "address": ""
     }
 ]
第二个简单地省略了它:

 "emailAddresses": [
     {
         "name": "name"
     }
 ]

编辑:“联系人”是指可在Office 365人员应用程序中访问的Outlook联系人,而不是普通的Office 365用户。如果我的问题不清楚,很抱歉。

我不确定这是否有效,但也许可以试一试

string email = await graphClient.Users[your_users_id].Request().Select("Mail").GetAsync().Mail;
为了得到上面的答案,我使用了一个简单的Select语句。并且具有可用于Select语句的属性列表。

在Github上找到了解决我问题的方法

结果表明,Exchange联系人的(第一个)除了其
地址之外,还有一个隐藏地址。
当您将电子邮件地址设置为无效地址时,无效地址将存储在
原始显示名中
,其
地址
将被清除,这就是为什么在Office 365联系人列表中联系人的电子邮件地址为
(空)
,但编辑联系人时无效地址似乎仍然存在

PidLidEmail1OriginalDisplayName
是MAPI属性。为了获得它,我们需要使用。请求应如下所示,但其空格URL编码为
%20

GET /me/contacts/{id}?$expand=singleValueExtendedProperties($filter=id eq 'String {00062004-0000-0000-C000-000000000046} Id 0x8084')
响应应包括包含无效地址的附加字段:

"singleValueExtendedProperties": [
    {
        "id": "String {00062004-0000-0000-c000-000000000046} Id 0x8084",
        "value": "user@example?com"
    }
如果联系人有多个电子邮件地址,请使用
PidLidEmail2OriginalDisplayName
/
PidLidEmail3OriginalDisplayName
作为联系人的第二个或第三个电子邮件地址