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

时间:2018-03-09 02:07:10

标签: microsoft-graph

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

我已尝试/contacts/contacts/{id}。第一个返回空的address

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

,第二个简单地省略了它:

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

编辑:“联系人”是指可在Office 365 People应用中访问的Outlook联系人,而非常规Office 365用户。对不起,如果我的问题不清楚。

2 个答案:

答案 0 :(得分:0)

我不确定这是否有用,但也许可以尝试一下。

string email = await graphClient.Users[your_users_id].Request().Select("Mail").GetAsync().Mail;

为了得到上面的答案,我使用this Get User documentation简要介绍了Select语句。 this documentation有一个可用于Select语句的属性列表。

答案 1 :(得分:0)

在Github上找到解决我问题的an issue

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

PidLidEmail1OriginalDisplayName是MAPI属性。为了获得它,我们需要使用extended properties。请求应如下所示,但使用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作为联系人的第二个或第三个电子邮件地址。