Можно ли программно получить доступ к списку контактов в Outlook с помощью Office Add In

Я создаю Add In, который должен захватывать в дополнение к списку контактов, которые имеет учетная запись, контакты (с, cc и bcc), которые используются в текущем элементе (сообщении).

Согласно документации, следующая инструкция дала мне ноль контактов, хотя у меня есть контакты в книге контактов и чтение сообщения с отправителем электронной почты.

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

Мне нужно получить список контактов, которыми я управляю в своей учетной записи:

Этот список доступен с помощью API-интерфейсов с открытым графом. Интересно, он также доступен локально с помощью объекта Office для надстроек Office

3 ответа

Решение

Office Js не предоставляет API для получения списка контактов в учетной записи. Но вы можете получить токен авторизации из Outlook, используя API аутентификации, а затем использовать этот токен, чтобы получить токен Graph для взаимодействия с API API Graph и получить список контактов.

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
    }
});

Создайте надстройку Node.js Office, которая использует единый вход

Похоже, вы неправильно поняли документацию.

Цитата:

В следующем примере осуществляется доступ к объектам контактов в теле текущего элемента.

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

Вы можете получить все контакты, используя ссылку ниже:

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);

  }

Для получения дополнительной информации, пожалуйста, обратитесь к ссылке ниже:

Получить контакты Outlook в приложение на основе форм C#

Другие вопросы по тегам