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