используя объектную модель outlook, могу ли я получить поля, которые я вижу в контакте outlook - PullRequest
2 голосов
/ 28 ноября 2009

Я могу просматривать глобальную адресную книгу, используя объектную модель outlook, но есть ли в любом случае использование объектной модели outlook из csharp, я могу получить следующие свойства человека:

Город, штат, страна / регион кличка заглавие Телефон

Я не могу найти эти свойства в объекте AddressEntry.


РЕДАКТИРОВАТЬ: я начал щедрость здесь. Я получил это с помощью запросов LDAP, но они такая боль. Я шокирован, что Outlook не поддерживает это в своем простом API. я хотел посмотреть, если кто-то еще это работает или может объяснить / обосновать, почему Outlook не будет поддерживать это

Ответы [ 4 ]

5 голосов
/ 04 декабря 2009

Использование Microsoft.Office.Interop.Outlook
Вам необходимо использовать объект ExchangeUser и метод GetExchangeUser для объекта AddressEntry.

using System;
using Microsoft.Office.Interop.Outlook;
static class Program
{
    static void Main(string[] args)
    {
        ExchangeUser oExUser;
        Application app = new Microsoft.Office.Interop.Outlook.Application();
        foreach (AddressList addressList in app.Session.AddressLists)
        {
            if (addressList.Name == "Global Address List")
            {
                foreach (AddressEntry item in addressList.AddressEntries)
                {
                    Console.WriteLine(item.Address);
                    oExUser = item.GetExchangeUser();
                    if (oExUser != null) 
                    {
                        Console.WriteLine(oExUser.FirstName);
                        Console.WriteLine(oExUser.LastName);
                        Console.WriteLine(oExUser.StreetAddress);
                        Console.WriteLine(oExUser.CompanyName);
                        Console.WriteLine(oExUser.Department);
                        Console.WriteLine(oExUser.OfficeLocation);
                        Console.WriteLine(oExUser.JobTitle);
                    }
                    Console.WriteLine();
                }
            }
        }
        Console.Read();
    }
}
1 голос
/ 08 декабря 2009

Как всегда при работе с объектной моделью Outlook, я рекомендую использовать библиотеку Redemption . (Это может включать COM Interop из C #, но это не должно быть проблемой.) Там вы должны взглянуть на библиотеку RDO (Redemption Data Objects) , а там на RDOAddressBook и RDOAddressEntry объектов. Объект RDOAddressEntry предоставляет все свойства, которые вы ищете.

Библиотека Redemption позволяет обойти проблемы, связанные с безопасностью Outlook, а также позволяет получить доступ к большему количеству свойств, чем в обычном OOM. К сожалению, я не могу предоставить вам рабочий образец для решения вашей конкретной проблемы, поскольку я пока использую библиотеку только для обработки почты. Но на сайте выкупа есть множество примеров кода.

1 голос
/ 28 ноября 2009

Является ли RDO и пригодится ли вам? Он предлагает совсем немного, что блокирует Outlook, включая адресные данные

RDO & C #

0 голосов
/ 28 ноября 2009

Как указано в другом вопросе , вам, возможно, придется обратиться к прямому доступу к базе данных LDAP под адресной книгой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...