4

在 Outlook 2010 中,您可以创建联系人并将其添加到组中。有没有办法获得这些组的列表和其中的联系人?以下是我访问联系人的方式:

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

不是指默认的联系人文件夹,例如“联系人”和“建议的联系人”。

4

2 回答 2

7

联系人组由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);
    }
}
于 2012-09-14T11:42:34.393 回答
1

你可以试试这个

            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);
                }
            }
于 2013-06-18T10:22:09.450 回答