У меня есть приложение, которое создает профиль MAPI для отправки писем/сообщений. Профиль правильно создается в среде Outlook2007, но не создается должным образом в среде Outlook2007 SP2. И исходный код, и «среда обмена, для которой используется профиль MAPI/outlook» одинаковы. Профиль создается с помощью подсистемы MAPI.
Описание приложения: Приложение представляет собой сервисное приложение Windows. Служба выполняет COM-приложение. Приложение COM запускает новый поток для создания нового профиля и отправляет образец сообщения.
Актуальная проблема: во время создания профиля вызов функции ConfigureMsgService (которая принадлежит IMsgServiceAdmin) не работает должным образом, хотя он возвращает S_OK. Значение 5-го параметра «lpProps» функции ConfigureMsgService приведено ниже.
// First, the mailbox name.
ZeroMemory(&rgval[0], sizeof(SPropValue) );
rgval[0].ulPropTag = PR_PROFILE_UNRESOLVED_NAME;
rgval[0].Value.lpszA = szMailbox;
// Next, the server name.
ZeroMemory(&rgval[1], sizeof(SPropValue) );
rgval[1].ulPropTag = PR_PROFILE_UNRESOLVED_SERVER;
rgval[1].Value.lpszA = szServer;
// For NT Services, need to do this to keep MAPI from
// displaying dialog boxes.
ZeroMemory(&rgval[2], sizeof(SPropValue) );
rgval[2].ulPropTag = PR_CONVERSION_PROHIBITED; //As the com application is executed by the NT service, this parameter is specified.
rgval[2].Value.b = TRUE;
Также обратите внимание, что до вызова функции ConfigureMsgService все другие вызовы MAPI, такие как MAPIInitialize, MAPIAdminProfiles, CreateProfile, AdminServices, CreateMsgService, GetMsgServiceTable и т. д., завершаются успешно.
Мой вопрос, тот же код работал правильно в среде Outlook 2007, но не работал в среде Outlook 2007 SP2.
Обратите внимание: 1. при выполнении того же кода из отдельного приложения все работало нормально. 2. Код не работал должным образом, если служба выполнялась как учетная запись локальной системы или как учетная запись сетевой службы.
- В чем может быть проблема? Я что-то упускаю.
- Есть ли обходной путь?
Заранее спасибо Сараванан