레이블이 EWS인 게시물을 표시합니다. 모든 게시물 표시
레이블이 EWS인 게시물을 표시합니다. 모든 게시물 표시

2012년 10월 29일 월요일

EWS Managed API를 이용한 연락처 정보 가져오기

MS Exchange Web Service Managed API

MS Exchange Web Service Managed API를 이용하면 EWS를 쉽게 이용할 수 있다. 아는게 없어 SOAP 정보를 하나 하나 분석해가며 사용했던 기억이 새록 새록..

여기서 API를 다운로드하고 실행하면 Program Files\Microsoft\Exchange\Web Services 폴더에 1.2와 2.0 버전의 API가 설치된다. 2.0 폴더의 Microsoft.Exchange.WebServices.dll 을 프로젝트에 참조하고 시작한다.

// 기본 버전은 Exchange2010_SP2 이다. 
ExchangeService service = new ExchangeService(
    ExchangeVersion.Exchange2007_SP1)
{
    Credentials = new WebCredentials("id", "pwd", "domain"),
    Url = new Uri("http://contoso.com/EWS/exchange.asmx")
};

// 연락처 폴더를 바인딩.
var contacts = Folder.Bind(service, 
    new FolderId(WellKnownFolderName.Contacts));

FindItemsResults findResults = service.FindItems(
    WellKnownFolderName.Contacts, 
    new ItemView(contacts.TotalCount));

foreach (var each in findResults)
{
    if (each is Contact)
    {
        Contact contact = each as Contact;
        // contact 변수를 이용해 연락처 정보를 가져온다.
    }
}


위 코드에서는 연락처 정보를 가져왔지만 (WellKnownFolderName.Contacts), 어떤 폴더를 바인딩 하냐에 따라 메일, 캘린더, 작업 등 다양한 아이템들을 가져올 수 있다. 참고로 WellKnownFolderName 구조체의 정의는 다음과 같다.

namespace Microsoft.Exchange.WebServices.Data
{
    public enum WellKnownFolderName
    {
        Calendar = 0,
        Contacts = 1,
        DeletedItems = 2,
        Drafts = 3,
        Inbox = 4,
        Journal = 5,
        Notes = 6,
        Outbox = 7,
        SentItems = 8,
        Tasks = 9,
        MsgFolderRoot = 10,
        [RequiredServerVersion(ExchangeVersion.Exchange2007_SP1)]
        PublicFoldersRoot = 11,
        Root = 12,
        JunkEmail = 13,
        SearchFolders = 14,
        VoiceMail = 15,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        RecoverableItemsRoot = 16,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        RecoverableItemsDeletions = 17,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        RecoverableItemsVersions = 18,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        RecoverableItemsPurges = 19,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRoot = 20,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveMsgFolderRoot = 21,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveDeletedItems = 22,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRecoverableItemsRoot = 23,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRecoverableItemsDeletions = 24,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRecoverableItemsVersions = 25,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRecoverableItemsPurges = 26,
    }
}


참고