我有一个创建 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. 如果服务作为本地系统帐户或网络服务帐户执行,则代码无法正常工作。
- 可能是什么问题呢?我是不是错过了什么。
- 是否有任何解决方法可用?
提前感谢萨拉瓦南