2012-07-19 54 views
5

我正在申請訪問Exchange 2003服務器上託管的特定電子郵件帳戶,並對發現的未讀電子郵件執行一些操作。我對MAPI的工作原理並不十分了解,如果我錯過了非常明顯的東西,我不會感到驚訝!我是(不幸)使用C#,我已閱讀有關這可能會導致的問題(,我害怕的影響,但我的老闆想這樣做,所以..)。如何連接到特定的Outlook/Exchange帳戶?

我很努力地找到關於如何連接到特定帳戶的任何好信息! 該應用程序將從某些筆記本電腦(讓我們說我的)運行,所以會有一個Outlook連接到打開時的默認帳戶。所以:

  • 是否有可能從用戶已經有自己的帳戶,可能有Outlook打開的計算機連接到另一個帳戶?

  • 如果有可能。我該怎麼做呢?啓動Outlook互操作對象時,應用程序會自動獲取用戶帳戶並將當前用戶設置爲該用戶。 我曾希望Logon()方法將這個排序,但沒有。即使只是運行 Outlook.Application olApp = new Outlook.Application(); 進入並將當前用戶設置爲標準帳戶。

我希望我做的意義(可能不是),但隨時在評論中詢問更詳細的問題,我會盡快回復越好。就像我說的,我對MAPI和Exchange知之甚少,所以我正在努力解決我的問題。

回答

4

如果你想你需要使用WebDAVCDOEX,或ExOLEDB連接到特定的電子郵件帳戶中Exchange 2003中。如果您使用Exchange 2007+,則可以使用EWS

的Outlook互操作只會讓你連接的交互式桌面賬戶(用戶登錄當前)。連接到其他帳戶的唯一方法是當前交互式帳戶有added the shared mailbox

+0

(嘆氣)...我懷疑這可能是這種情況,但也和其他的路線繼續前進。感謝您的建議。鏈接是有用的起點。 – Jammerz858 2012-07-19 15:29:58

1

您也可以使用Redemption - 將您的代碼作爲可訪問相關郵箱的域用戶運行,請撥打RDOSessionLogonExchangeMailbox,然後使用RDOSession打開其他用戶的郵箱。 GetSharedMailbox/GetSharedDefaultFolder

由於Exchange 2013不再允許舊式RPC連接(僅RPC-over-HTTP或基於HTTP的MAPI),因此可以使用RDOSession.LogonHostedExchangeMailbox(適用於Exchange 2013和Exchange 2010)。

1

如果你有一臺機器上定義2個帳戶,您可以使用下列內容:example

Outlook.Application app = new Outlook.Application(); 
Outlook.NameSpace ns = app.GetNamespace("MAPI"); 

// optional 
//object missing = Type.Missing; 
//ns.Logon(missing, missing, true, false); 

// additional email address 
string recipientName = "[email protected]"; 

Outlook.Recipient recip = ns.CreateRecipient(recipientName); 
recip.Resolve(); 

if (recip.Resolved) 
{ 
Outlook.MAPIFolder inboxFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox); 
} 
相關問題