代码之家  ›  专栏  ›  技术社区  ›  Yazid Erman

是否可以使用Office加载项以编程方式访问outlook中的联系人列表

  •  0
  • Yazid Erman  · 技术社区  · 7 年前

    我正在构建一个外接程序,除了帐户拥有的联系人列表之外,还应该获取当前项目(消息)中使用的联系人(收件人、发件人、抄送和密件抄送)。

    按照 documentation ,下面的说明给了我零个联系人,尽管我在联系人簿中有联系人,并且通过发件人电子邮件阅读邮件。

    var contacts = Office.context.mailbox.item.getEntities().contacts;
    

    我需要获取我在我的帐户中管理的联系人列表: enter image description here

    此列表可通过 open graph APIs ,我想知道它是否也可以通过Office外接程序的Office对象在本地访问

    3 回复  |  直到 7 年前
        1
  •  2
  •   SureshGowtham S    7 年前

    Office Js不提供获取帐户中联系人列表的API。 但您可以使用从Outlook获取身份验证令牌 authentication APIs ,然后使用此令牌获取要与之交互的图形令牌 Graph APIs 并得到 list of contacts

    Office.context.auth.getAccessTokenAsync(function (result) {
        if (result.status === "succeeded") {
            // Use this token to call Web API
            var ssoToken = result.value;
            // Now send this token to your server and acquire a Graph token
            // Server can talk to Graph APIs and get contacts to display
        } else {
            // Handle error
        }
    });
    

    Create a Node.js Office Add-in that uses single sign-on

        2
  •  1
  •   Victor Ivanidze    7 年前

    看来你误解了文档。

    引述:

    在当前项的主体中

    var contacts = Office.context.mailbox.item.getEntities().contacts;
    
        3
  •  0
  •   Alina Li    7 年前

    您可以使用以下链接获取所有联系人:

    Microsoft.Office.Interop.Outlook.Items OutlookItems;
      Microsoft.Office.Interop.Outlook.Application outlookObj = new Microsoft.Office.Interop.Outlook.Application();
      MAPIFolder Folder_Contacts;
      Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
      OutlookItems = Folder_Contacts.Items;
      MessageBox.Show("Wykryto kontaktów: " + OutlookItems.Count.ToString());
    
      for (int i = 0; i < OutlookItems.Count; i++)
      {
        Microsoft.Office.Interop.Outlook.ContactItem contact = (Microsoft.Office.Interop.Outlook.ContactItem)OutlookItems[i+1];
        sNazwa = contact.FullName;
        sFirma = contact.CompanyName;
        sAdress = contact.BusinessAddressStreet;
        sMiejscowosc = contact.BusinessAddressPostalCode + " " + contact.BusinessAddressCity;
        sEmail = contact.Email1Address;
        dataGridView1.Rows.Add(sNazwa, sFirma, sAdress, sMiejscowosc, sEmail);
    
      }
    

    有关更多信息,请参阅以下链接:

    Get Outlook contacts into C# form-based application