문제

파일 또는 데이터베이스에서 이름과 이메일이 포함 된 레코드를 읽고 기존 Oulook 배포 목록 (GAL이 아닌 개인 연락처에서)에 추가해야합니다.

방금 우편물과 약속을 위해 일하는 LINQ를 사용하여 OL에서 읽는 예를 보았지만 DIST 목록의 내용을 나열하는 방법을 알 수는 없습니다.

private static void GetContacts()
    {
         Outlook.Application app = new Outlook.Application();
         Outlook.Folder folder = (Outlook.Folder)app.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
 var distLists = from item in folder.Items.AsQueryable<MyDistList>()
                 where item.DLName == "My Dist List"
                 select item.Item;

        var builder = new StringBuilder();

        foreach (var list in distLists)
        {
            builder.AppendLine(list.DLName);
            foreach (var item in list.Members)
            {
            // can't figure out how to iterate through the members here
            // compiler says Object doesn't have GeNumerator...
            }
        }

        Console.WriteLine(builder.ToString());
        Console.ReadLine();
    }

일단 멤버를 읽을 수 있으면 더욱 까다로운 새로운 것들을 추가 할 수 있어야합니다. 모든 도움이 감사하겠습니다.

도움이 되었습니까?

해결책

충분히 쉽습니다. 나는 당신이 GAL에 대항하여 해결 한 경우에만 생각했던 것처럼 결의를 요구하는 전화를 놓치고있었습니다.

Outlook.Recipient rcp = app.Session.CreateRecipient("Smith, John<j.smith@test.com>");
rcp.Resolve();
list.AddMember(rcp);
list.Save();

Distlist.getMember 메소드를 사용하는 반복기를 만들 수 있습니다.

// reiglstitem.getMembers ()를 반복자로 랩합니다

public static class DistListItemExtensions
{
    public static IEnumerable<Outlook.Recipient> Recipients(this Outlook.DistListItem distributionList)
    {
        for (int i = 1; i <= distributionList.MemberCount; i++)
        {
            yield return distributionList.GetMember(i);
        }
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top