2012-07-06 81 views
1

我有一些問題 - 我需要從我的機器上從Outlook 2010收到全球通用地址列表。我的意思是所有字段:C#Outlook 2010獲取完整的全球通訊簿信息

標題,「名字」,「中間名」,「姓氏」,「商業街2「,」商業街3「,」商業城市「,」商業國家「,」商業郵政編碼「,」商業國家/地區「,」家庭街道「,」家庭

如果我嘗試出口GAL從Outlook我能得到這個列表,但如何我可以通過C#這樣做

我想是這樣的:?

 Application oApp = new Application(); 
     NameSpace oNS = oApp.GetNamespace("mapi"); 
     oNS.Logon("Name", "Pass", false, true); 
     AddressLists oDLs = oNS.AddressLists; 
     AddressList oGal = oDLs["Global Address List"];    
     string sDL = "TestDL"; 
     AddressEntries oEntries = oGal.AddressEntries; 
     AddressEntry oDL = oEntries[sDL];  
     oEntries = oDL.Members; 
     AddressEntry oEntry = default(AddressEntry);  
     for (i = 1; i <= oGal.AddressEntries.Count ; i++ ) 
     { 
      oEntry = oGal.AddressEntries[i]; 
      //listBox1.Items.Add(oEntry.Name); 
     } 

但每次添加ressEntries [i]僅包含姓名,電子郵件等。

回答

1

使用AddressEntry.PropertyAccessor檢索任何可用的MAPI屬性。 例如檢索第一個名字,檢索PR_GIVEN_NAME_W屬性(= 0x3A06001F)。 查看MFCMAPI或OutlookSpy的地址簿對象,找出可用的內容和屬性標記。

givenName = AddressEntry.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3A06001F") 
+0

對不起,您能詳細說明一下如何使用PR_GIVEN_NAME_W。我甚至不知道在哪裏使用它。 – Yola 2015-03-13 07:31:14

+0

查看最新的答案。 – 2015-03-13 13:25:18

+0

謝謝,我曾試過這個,但是我得到了'屬性「http://schemas.microsoft.com/mapi/proptag/0x3A06001F」是未知或無法找到的。' – Yola 2015-03-13 14:12:35