Используя MAPI с C ++, как я могу открыть папку «Входящие» другого пользователя? - PullRequest
1 голос
/ 08 декабря 2008

Я хочу написать скрипт автоматического монитора для программного получения информации из почтового ящика Exchange 2003 другого пользователя. У меня есть рабочий код C ++ для входа в MAPI и подключения к моей собственной папке входящих сообщений. Я также могу использовать апплет Панель управления-> Почта, чтобы настроить почтовый ящик другого пользователя в моем профиле, и мой код может получить доступ таким образом. Однако это было сделано на моем рабочем столе с установленным Outlook, который предоставляет более богатый редактор почтовых профилей.

Поскольку это будет работать на сервере, я бы предпочел не устанавливать Outlook вообще. Вместо этого я могу установить MAPI клиент . Затем я создаю простое приложение MAPI, которое вызывает мастер почтового профиля, используя MAPILogonEx() с флагом MAPI_LOGON_UI. Однако базовый клиент MAPI не имеет функций для настройки почтового ящика другого пользователя. В качестве требования я могу запускать этот сценарий только в качестве учетной записи службы приложения мониторинга, поэтому не могу сказать, чтобы он выполнялся как учетная запись, чей почтовый ящик я хочу.

Можно ли по-прежнему подключаться к почтовому ящику другого пользователя (при условии, что разрешения уже предоставлены) с помощью основного клиента MAPI? Или для этой функциональности абсолютно необходимо установить Outlook?

Ответы [ 3 ]

1 голос
/ 08 декабря 2008

Понятно ... Я не уверен, как это сделать явно; обычно это побочный эффект от вызова CreateStoreEntryID с неправильными флагами. То, что вы хотите сделать, это, вероятно:

  1. Получите IID_IExchangeManageStore из вашего хранилища сообщений по умолчанию
  2. Звоните CreateStoreEntryID
  3. Затем откройте этот магазин по ID записи

    LPEXCHANGEMANAGESTORE mapiObject = NULL;
    
    store->QueryInterface( IID_IExchangeManageStore, (LPVOID *) &mapiObject);
    
    mapiObject->CreateStoreEntryID( server, mailbox, OPENSTORE_TAKE_OWNERSHIP | 
        OPENSTORE_USE_ADMIN_PRIVILEGE, &len, &buffer);
    
    //Call OpenEntry on the entry id
    

Если вам нужен более подробный пример, поищите в источнике проекта MFC MAPI CreateStoreEntryID. Если у вас есть другие вопросы, лучшее место для их получения - группа новостей microsoft.public.win32.programmer.messaging.

1 голос
/ 12 декабря 2008

Я бы настоятельно рекомендовал использовать клиент Microsoft Exchange MAPI (как вы связали). Он спроектирован так, чтобы быть намного более надежным, чем версия этих библиотек для Outlook. API-интерфейс Outlook и Exchange Server не должен отличаться от Extended MAPI.

Вам потребуется использовать Extended MAPI (как описано Cain T S Random), чтобы открыть другие почтовые хранилища, и, конечно, ваше приложение должно быть зарегистрировано как пользователь Windows с соответствующими разрешениями на сервере Exchange.

0 голосов
/ 08 декабря 2008

Вы смотрели в ConfigureMsgService? Я считаю, что это работает с Exchange MAPI, или вы говорите, что пытались это, и это не сработало?

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