使用MAPI w/C++,如何打开另一个用户的收件箱?
我正在寻找编写一个自动化的监视器脚本以编程方式从另一个用户的Exchange 2003收件箱中检索信息。我正在使用C++代码登录到MAPI并连接到我自己的收件箱。我还可以使用控制面板 - >邮件小程序将另一个用户的邮箱配置到我的配置文件中,并且我的代码可以以这种方式访问。不过,这是在安装了Outlook的桌面上完成的,它提供了更丰富的邮件配置文件编辑器。使用MAPI w/C++,如何打开另一个用户的收件箱?
因为这将在服务器上运行,所以我宁愿不要安装Outlook。相反,我可以安装MAPI client。然后,我创建一个简单的MAPI应用程序,使用MAPILogonEx()
和MAPI_LOGON_UI
标志弹出邮件配置文件向导。但是,基本MAPI客户端不具有配置其他用户的邮箱的功能。作为要求,我只能将此脚本作为监视应用程序的服务帐户运行,因此我无法将其作为需要其邮箱的帐户运行。
是否仍可以使用基本MAPI客户端连接到另一个用户的邮箱(假设已授予权限)?或者是否绝对有必要为此功能安装Outlook?
你看过ConfigureMsgService吗?我相信这适用于Exchange MAPI,或者您是否说过尝试过,但它不起作用?
我明白了......我不确定如何明确地做到这一点;这通常是使用错误标志调用CreateStoreEntryID
的副作用。什么是你希望做的可能是:
- 从您的默认邮件存储
- 呼叫获取一个
IID_IExchangeManageStore
CreateStoreEntryID
-
然后由入口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
如果您需要更详细的示例,请搜索CreateStoreEntryID
的MFC MAPI项目源。如果还有其他问题,最好的地方是microsoft.public.win32.programmer.messaging
新闻组。
我对这个主题的研究与这个建议是一致的。然而,找到给你IExchangeManageStore的二进制文件和头文件似乎是不可能的;从MS下载中删除。它在任何地方都可用吗? – spoulson 2008-12-22 22:11:56
我强烈建议使用Microsoft Exchange MAPI客户端(因为您已链接)。它的设计要比这些库的Outlook版本更加强大。对于扩展MAPI,您应该发现Outlook和Exchange Server之间的API没有区别。
您将需要使用Extended MAPI(如Cain T S Random所述)来打开其他邮件存储库,当然,您的应用程序需要以在Windows服务器上具有相应权限的Windows用户身份登录。
IMsgServiceAdmin :: ConfigureMsgService将为该配置文件设置邮箱。我真正想要的是一种添加_additional_邮箱的方法。当您在Outlook中执行此操作时,MAPI将它们视为其他IMsgStore条目。没有Outlook,这怎么办? – spoulson 2008-12-08 19:06:55