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,
    }
}


참고

댓글 없음:

댓글 쓰기