Глобальный список адресов с использованием Outlook Redemption

Я использую GetAddressList для доступа к списку адресов, как указано здесь: https://bytes.com/topic/c-sharp/answers/238320-session-addressbook-doesnt-find-my-address-lists

Но это займет больше времени, если есть 500 или более пользователей. Есть ли самый быстрый способ получить список адресов. Как я могу получить список адресов с помощью объекта Redemption.MAPITable?

Спасибо


person A_kumar    schedule 14.11.2019    source источник


Ответы (1)


Вы можете использовать RDOAddressList.AddressEntries.MAPITable.
Вы можете создать экземпляр объекта RDOSession, установить для его свойства MAPIOBJECT значение Namespace.MAPIOBJECT из OOM, а затем получить RDOAddressList с помощью RDOSession.GetRDOObjectFromOutlookObject или RDOSession.GetAddressListFromID..

person Dmitry Streblechenko    schedule 14.11.2019
comment
Спасибо Дмитрий за ответ. Я пытаюсь объяснить по следующей ссылке: stackoverflow.com/questions/37590083/ ADODB.Recordset Recordset = table.ExecSQL(SELECT \schemas.microsoft.com/mapi/proptag/0x39FE001F\ из списка); но ADODB не определен. Как я могу использовать ADODB.Recordset в своем приложении vc++, чтобы я мог получить имя и SMTPAddress из глобального списка адресов, используя таблицу MAPI. - person A_kumar; 15.11.2019
comment
Вы импортировали библиотеку типов ADODB в свое приложение VC++? Это ничем не отличается от импорта библиотек типов Outlook или Redemption. - person Dmitry Streblechenko; 15.11.2019
comment
Спасибо Дмитрий. Я пытаюсь использовать этот метод, но безуспешно #import msado15.dll no_namespace rename(EOF, adoEOF) _bstr_t valField1; _RecordsetPtr pRstAuthors = NULL; pRstAuthors = table.ExecSQL(_T(SELECT \schemas.microsoft.com/mapi/proptag/0x39FE001F\ из списка)); в то время как (!pRstAuthors->adoEOF){ valField1 = pRstAuthors->Fields->GetItem(Name)->Value; pRstAuthors-›MoveNext();} - person A_kumar; 15.11.2019