【问题标题】:Is it possible to programmatic-ally access the list of contacts in outlook using Office Add In是否可以使用 Office 加载项以编程方式访问 Outlook 中的联系人列表
【发布时间】:2019-01-05 02:18:17
【问题描述】:

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

根据documentation,以下说明给了我零个联系人,尽管我在通讯录中有联系人,并且阅读了带有发件人电子邮件的消息。

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

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

此列表可通过open graph APIs 访问,我想知道它是否也可通过 Office 加载项的 Office 对象在本地访问

【问题讨论】:

    标签: outlook office-js outlook-web-addins


    【解决方案1】:

    Office Js 不提供 API 来获取帐户中的联系人列表。 但是你可以使用authentication APIs从Outlook获取一个auth token,然后使用这个token获取Graph token来与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】:

      看来您误解了文档。

      引用:

      以下示例访问当前项目正文中的联系人实体

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

      【讨论】:

      • 这是否意味着它将解析邮件正文并提取任何提及的联系人?
      • 不管怎样,我对账号的联系人列表感兴趣,与当前的Item无关。
      • 我想知道使用 Open Graph API 是否是解决方案?虽然看起来我们不需要注册 Office 加载项:docs.microsoft.com/en-us/graph/api/…
      • Yazid,一个帐户根本没有联系人。它有一个或多个地址。你到底是什么意思?
      • 我的意思是由每个用户管理的 Outlook 联系人列表:此链接的主题:add-in-express.com/creating-addins-blog/2011/10/27/… 我已更新主要问题以明确说明
      【解决方案3】:

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

      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

      【讨论】:

      • 谢谢你,Alina,但我正在开发 Office 插件,我的语言是 Javascript,而不是 C#,你知道用于 Javascript 的 SDK 吗?
      • 您可以参考这个链接:stackoverflow.com/questions/39029053/….
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      相关资源
      最近更新 更多