1

我希望编写一个自动监控脚本,以编程方式从另一个用户的 Exchange 2003 收件箱中检索信息。我有工作的 C++ 代码来登录 MAPI 并连接到我自己的收件箱。我还可以使用控制面板->邮件小程序将另一个用户的邮箱配置到我的个人资料中,我的代码可以通过这种方式访问​​。但是,这是在我安装了 Outlook 的桌面上完成的,它提供了更丰富的邮件配置文件编辑器。

由于这将在服务器上运行,我宁愿根本不安装 Outlook。相反,我可以安装MAPI 客户端MAPILogonEx()然后,我创建了一个简单的 MAPI 应用程序,它使用MAPI_LOGON_UI标志弹出邮件配置文件向导。但是,基本 MAPI 客户端不具备配置其他用户邮箱的功能。作为要求,我只能将这个脚本作为监控应用程序的服务帐户运行,所以我不能告诉它作为我想要的邮箱的帐户运行。

是否仍然可以使用基本 MAPI 客户端连接到另一个用户的邮箱(假设已授予权限)?或者是否绝对有必要为此功能安装 Outlook?

4

3 回答 3

1

我强烈建议使用 Microsoft Exchange MAPI 客户端(如您所链接的那样)。它被设计为比这些库的 Outlook 版本更强大。您应该会发现在扩展 MAPI 方面,Outlook 和 Exchange Server 之间的 API 没有什么不同。

您将需要使用扩展 MAPI(如 Cain TS Random 所述)来打开其他邮件存储,当然您的应用程序需要在 Exchange 服务器上以具有适当权限的 Windows 用户身份登录。

于 2008-12-11T22:17:03.887 回答
1

我明白了......我不确定如何明确地做到这一点;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新闻组。

于 2008-12-08T19:33:43.547 回答
0

您是否查看过 ConfigureMsgService?我相信这适用于 Exchange MAPI,或者您是说您尝试过但没有用?

于 2008-12-08T18:17:23.513 回答