2015-06-08 71 views
0

我正在尋找一種以編程方式(.Net)訪問Exchange 2003服務器上的PRIVATE聯繫人文件夾的方法,以創建一個子文件夾,以便從數據庫創建聯繫人。如何以編程方式訪問Exchange 2003專用(聯繫人)項目

我迄今發現的解決方案依賴於EWS,例如, https://social.msdn.microsoft.com/Forums/en-US/aec6c998-f304-439c-9fa7-27bb9a4c4b45/problem-accessing-folders-in-another-mailbox?forum=exchangesvrdevelopment - 此類示例適用於2007+,我必須針對的Exchange服務器是2003.

其他示例是Outlook Addins。

我需要一個獨立的解決方案(一個可執行文件),每次運行它時,它都會從DB創建聯繫人到用戶的「聯繫人」文件夾下的特定子文件夾中。

我也搜索了一些沒有太多運氣的MAPI代碼示例(.Net)。

您能否提供說明如何訪問私人郵箱聯繫人文件夾(或子文件夾)以在其中寫入新聯繫人項目的代碼(VB.NET或C#)?

+0

完全獨立會產生問題,但請看看使用Outlook的CDO/RDO機制的Redemption Data Objects。它確實需要安裝Outlook,但不需要運行它(它使用庫,它不會自動運行它)。我們最近開始使用它,性能比EWS好得多。 http://www.dimastr.com/redemption/rdo_introduction.htm即使您不使用它,也可以獲取OutlookSpy的(免費)副本,它將公​​開大量有關Exchange如何在內部工作的信息(向工具欄添加工具欄展望) – Basic

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

@John Saunders:感謝您爲遵守法規而作出的努力。在我的特殊情況下,我覺得從標題中刪除的「.Net」對於強調我不需要接收C++/java等解決方案是必不可少的,但只需要.Net。我想有些人可能會認爲這是明顯的,因爲「.net」標籤。標籤是否具有「僅」XOR「很高興」的含義......除非另有明確解釋? – Miha

回答

0

[從評論推薦]

完全獨立將是有問題的,但看看Redemption Data Objects暴露的CDO/RDO由outlook使用的機制。它確實需要安裝Outlook,但不需要運行它(它使用庫,但無法通過自動化Outlook工作)。

我們最近開始使用RDO,性能比EWS好得多。

即使您不使用它,也可以獲取同一家公司的(免費)OutlookSpy副本。它將公開許多有關Exchange如何在內部工作的信息,尤其是數據結構正在使用的信息(它向Outlook添加了一個工具欄,它並不孤立)。

+0

我想將其標記爲「答案」。怎麼樣? – Miha

+0

左側的帖子得分應該有一個勾號。點擊它接受。請參閱[接受答案:它是如何工作的](http://meta.stackexchange.com/a/5235/135956)和[「聲譽」如何工作?](http://meta.stackexchange.com/q/7237/135956)的一些網站基礎知識 – Basic

0

如果您嘗試使用.Net,那麼您可能需要使用Outlook對象,如在MSDN上描述in the conclusion to the Using MAPI to Create Outlook 2007 Items文章所述。 CDO和RDO旨在用於VBscript和其他非託管代碼。

使用此方法,您正在使用C#來利用給定郵箱中的Outlook 2007(或更好)自動化。是的,它需要一個對目標郵箱具有適當訪問權限的帳戶,並且您必須迭代郵箱並自行瀏覽文件夾樹。

他們給出的例子是這樣的:

private void AddContact() 
{ 
    try 
    { 
     Outlook.ContactItem oContact = 
      Application.CreateItem(
      Outlook.OlItemType.olContactItem) 
      as Outlook.ContactItem; 
     oContact.FirstName = "Jacqueline"; 
     oContact.LastName = "Haddad"; 
     oContact.Initials = "J.H."; 
     oContact.CompanyName = "Microsoft"; 
     oContact.Email1Address = "[email protected]"; 
     oContact.Email1AddressType = "SMTP"; 
     oContact.Email1DisplayName = 
      "Jacqueline Haddad ([email protected])"; 
     oContact.BusinessAddressStreet = "1 Microsoft Way"; 
     oContact.BusinessAddressCity = "Redmond"; 
     oContact.BusinessAddressState = "WA"; 
     oContact.BusinessAddressPostalCode = "95802"; 
     oContact.BusinessAddressCountry = "USA"; 
     oContact.BusinessTelephoneNumber = "800-555-1212"; 
     oContact.WebPage = "http://www.codeplex.com/mfcmapi"; 
     oContact.Body = "This is a sample note."; 
     oContact.Save(); 
    } 
    catch (Exception ex) 
    { 
     Debug.WriteLine(ex.Message); 
    } 
} 
+0

另一個含義是,您需要安裝Outlook並在您運行此工具的計算機上配置適當的配置文件。 – DevinGanger

相關問題