2012-08-15 86 views
4

我正在試驗一個小程序,用於從Exchange服務器發送電子郵件並保存任何附加文件。從建議中,我決定使用Redemption庫。從服務器使用不同用戶帳戶的兌換

我在服務器上安裝了Microsoft Exchange Server MAPI Client and Collaboration Data Objects 1.2.1,所以它應該在沒有Outlook的情況下工作。當我在本地機器上運行程序時,它可以毫無問題地瀏覽我自己的收件箱。但是,當我嘗試在服務器上執行它時,我遇到了問題。

即使我在代碼中提供了登錄信息,我也會得到登錄提示。我使用與正在嘗試訪問的帳戶不同的帳戶登錄服務器。我簡單的嘗試是這樣的:

// Get session 
RDOSession session = RedemptionLoader.new_RDOSession(); 

// Attempt login 
session.Credentials.Add("outlook.server.local", 
         "user", 
         "password", 
         rdoCredentialType.ctGeneric, 
         rdoCredentialPersist.cpLocalMachine); 

session.LogonExchangeMailboxEx("user", 
           "outlook.server.local", 
           false, 
           true, 
           "", 
           ""); 

// Access mailbox 
RDOFolder folder = session.GetDefaultFolder(rdoDefaultFolders.olFolderInbox); 

我得到一個錯誤,當我嘗試訪問郵箱 - 或任何其他項目:

Unhandled Exception: System.Runtime.InteropServices.COMException: 
    Error in IMAPI Session::OpenMsgStore: MAPI_E_LOGON_FAILED 
Make sure your code runs under the Windows user identity that has MAPI profiles. 

我怎麼能訪問我的郵箱作爲登錄時不同的用戶?如果我用「Run As ...」執行程序並提供我的用戶登錄,它也可以在服務器上運行。但我需要它與不同的用戶一起工作。

回答

3

確保您的用戶具有默認的MAPI配置文件(只需啓動Outlook並連接到任意郵箱)。

然後使用session.logon登錄到「默認配置文件」並使用session.GetSharedMailbox()連接到您的郵箱。

+1

你可以關閉括號嗎?我無法進行少於6個字符的修改。 – Superbest 2012-09-25 05:45:18

相關問題