2012-09-14 95 views
3

在Outlook 2010中,您可以創建聯繫人並將其添加到組。有什麼方法可以獲得這些組織及其中的聯繫人列表嗎?以下是我訪問聯繫人:如何使用MAPI獲取Outlook聯繫人組?

var outlook = new Outlook.Application().GetNamespace("MAPI"); 
var folder = outlook.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); 
foreach (var curr in folder.Items.OfType<Outlook.ContactItem>()) 
{ 
    ... 
} 

意味着默認的聯繫人文件夾,如「聯繫人」和「建議的聯繫人」。

回答

6

聯繫人組由DistListItem Interface表示。 DistListItem接口有MemberCount屬性和GetMember()方法遍歷組成員。

var outlook = new Application().GetNamespace("MAPI"); 
var folder = outlook.GetDefaultFolder(OlDefaultFolders.olFolderContacts); 
foreach (var curr in folder.Items.OfType<DistListItem>()) 
{ 
    Console.WriteLine(curr.DLName); 

    for (int memberIdx = 1; memberIdx <= curr.MemberCount; memberIdx++) 
    { 
     var member = curr.GetMember(memberIdx); 
     Console.WriteLine(member.Name); 
    } 
} 
+0

謝謝,這個工作就像一個魅力! – Impworks

+0

關於手機號碼和公司詳細信息等小組成員聯繫細節怎麼樣? –

+0

@Shyamsundarshah,看來這是另一個問題。隨意問作爲一個單獨的問題。 –

0

你可以試試這個

  DataTable dt = new DataTable(); 
      dt.Columns.Add("FirstName"); 
      dt.Columns.Add("MiddleName"); 
      dt.Columns.Add("LastName"); 
      dt.Columns.Add("Email"); 

      Microsoft.Office.Interop.Outlook.Items OutlookItems; 
      Microsoft.Office.Interop.Outlook.Application outlookObj = new Microsoft.Office.Interop.Outlook.Application(); 
      MAPIFolder Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts); 
      OutlookItems = Folder_Contacts.Items; 

      foreach (var item in OutlookItems) 
      { 
       var contact = item as ContactItem; 
       if (contact != null) 
       { 
        DataRow dr = dt.NewRow(); 
        dr["FirstName"] = contact.FirstName; 
        dr["MiddleName"] = contact.MiddleName; 
        dr["LastName"] = contact.LastName; 
        dr["Email"] = contact.Email1Address; 
        dt.Rows.Add(dr); 
       } 
      }