首页 文章

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

提问于
浏览
2

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

我试过 /contacts/contacts/{id} . 第一个返回一个空 address

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

第二个简单地省略了它:

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

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

2 回答

  • 0

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

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

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

  • 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 作为联系人的第二个或第三个电子邮件地址 .

相关问题