使用MAPI w / C ++,如何打开另一个用户的收件箱?

时间:2008-12-08 16:48:22

标签: exchange-server mapi

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

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

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

3 个答案:

答案 0 :(得分: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
    
  4. 如果您需要更详细的示例,请搜索CreateStoreEntryID的MFC MAPI项目的来源。如果您有其他问题,最好的答案是microsoft.public.win32.programmer.messaging新闻组。

答案 1 :(得分:1)

我强烈建议您使用Microsoft Exchange MAPI客户端(因为您已链接)。它被设计为比这些库的Outlook版本更强大。对于扩展MAPI,您应该发现Outlook和Exchange Server之间的API没有区别。

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

答案 2 :(得分:0)

您是否查看了ConfigureMsgService?我认为这可以与Exchange MAPI一起使用,或者你是说你尝试过它而且它不起作用?