【发布时间】:2011-05-21 10:53:09
【问题描述】:
我有一个创建 MAPI 配置文件以发送邮件/消息的应用程序。配置文件在 Outlook2007 环境中正确创建,但在 Outlook2007 SP2 环境中未正确创建。源代码和“MAPI/outlook 配置文件的交换环境”都相同。该配置文件是使用 MAPI 子系统创建的。
关于应用程序的说明:该应用程序是一个基于 Windows 服务的应用程序。该服务执行 COM 应用程序。 COM 应用程序产生一个新线程来创建新配置文件并发送示例消息。
实际问题:在配置文件创建过程中,即使返回 S_OK,对 ConfigureMsgService 函数(属于 IMsgServiceAdmin)的调用也无法正常工作。 ConfigureMsgService函数的第5个参数“lpProps”的值如下所示。
// 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. 如果服务作为本地系统帐户或网络服务帐户执行,则代码无法正常工作。
- 可能是什么问题?我错过了什么吗?
- 是否有任何解决方法?
提前致谢 沙拉湾
【问题讨论】:
标签: com outlook exchange-server outlook-2007 mapi