2008-12-08 26 views
1

我正在尋找編寫一個自動化的監視器腳本以編程方式從另一個用戶的Exchange 2003收件箱中檢索信息。我正在使用C++代碼登錄到MAPI並連接到我自己的收件箱。我還可以使用控制面板 - >郵件小程序將另一個用戶的郵箱配置到我的配置文件中,並且我的代碼可以以這種方式訪問​​。不過,這是在安裝了Outlook的桌面上完成的,它提供了更豐富的郵件配置文件編輯器。使用MAPI w/C++,如何打開另一個用戶的收件箱?

因爲這將在服務器上運行,所以我寧願不要安裝Outlook。相反,我可以安裝MAPI client。然後,我創建一個簡單的MAPI應用程序,使用MAPILogonEx()MAPI_LOGON_UI標誌彈出郵件配置文件嚮導。但是,基本MAPI客戶端不具有配置其他用戶的郵箱的功能。作爲要求,我只能將此腳本作爲監視應用程序的服務帳戶運行,因此我無法將其作爲需要其郵箱的帳戶運行。

是否仍可以使用基本MAPI客戶端連接到另一個用戶的郵箱(假設已授予權限)?或者是否絕對有必要爲此功能安裝Outlook?

回答

0

你看過ConfigureMsgService嗎?我相信這適用於Exchange MAPI,或者您是否說過嘗試過,但它不起作用?

+0

IMsgServiceAdmin :: ConfigureMsgService將爲該配置文件設置郵箱。我真正想要的是一種添加_additional_郵箱的方法。當您在Outlook中執行此操作時,MAPI將它們視爲其他IMsgStore條目。沒有Outlook,這怎麼辦? – spoulson 2008-12-08 19:06:55

1

我明白了......我不確定如何明確地做到這一點;這通常是使用錯誤標誌調用CreateStoreEntryID的副作用。什麼是你希望做的可能是:

  1. 從您的默認郵件存儲
  2. 呼叫獲取一個IID_IExchangeManageStoreCreateStoreEntryID
  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 
    
打開商店

如果您需要更詳細的示例,請搜索CreateStoreEntryID的MFC MAPI項目源。如果還有其他問題,最好的地方是microsoft.public.win32.programmer.messaging新聞組。

+0

我對這個主題的研究與這個建議是一致的。然而,找到給你IExchangeManageStore的二進制文件和頭文件似乎是不可能的;從MS下載中刪除。它在任何地方都可用嗎? – spoulson 2008-12-22 22:11:56

1

我強烈建議使用Microsoft Exchange MAPI客戶端(因爲您已鏈接)。它的設計要比這些庫的Outlook版本更加強大。對於擴展MAPI,您應該發現Outlook和Exchange Server之間的API沒有區別。

您將需要使用Extended MAPI(如Cain T S Random所述)來打開其他郵件存儲庫,當然,您的應用程序需要以在Windows服務器上具有相應權限的Windows用戶身份登錄。

相關問題