まずは、初期化コード。昨日は、ExchangeServiceBindingを使いましたが、今回はExchangeServiceを使います。ややこしや。
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
// service.AutodiscoverUrl("メールアドレス");
service.Url = new Uri("https://サーバ名/EWS/Exchange.asmx");
service.Credentials = new WebCredentials("メールアドレス", "パスワード");
メールアドレスを指定すればAutoDiscoverUrlでExchangeサーバを勝手に見つけてきてくれるはずなんですが、会社ではちゃんと動いてくれません。なので、service.Urlでサーバを直接しています。そのあとに、service.Credentialsを指定します。ただ、このタイミングでログインするわけではなくって、APIを通してサーバにアクセスしたときにユーザIDとパスワードがバリデーションされます。まあ、バックエンドはSoapなので、リクエストごとにXMLの中にユーザIDとパスワードが乗るだけですが。
では次に、今月分のスケジュールの情報をコンソールに出力します。
private void PrintSchedule(ExchangeService service, FolderID fid) {
DateTime dtStart = DateTime.Today;
dtStart = dtStart.AddDays(-dtStart.Day+1);
DateTime dtEnd = dtStart.AddMonths(1);
CalendarFolder calFolder = CalendarFolder.Bind(service, fid);
CalendarView calView = new CalendarView(dtStart, dtEnd);
FindItemsResults findResults = calFolder.FindAppointments(calView);
foreach (Appointment appointment in findResults.Items) {
Console.WriteLine("========================================");
Console.WriteLine(appointment.ICalUid);
Console.WriteLine(appointment.Id);
Console.WriteLine(appointment.Subject);
Console.WriteLine("Start: " + appointment.Start);
Console.WriteLine("End : " + appointment.End);
Console.WriteLine("Mod : " + appointment.LastModifiedTime);
}
}
ほとんどがお作法なので、難しいところは何もないです。全期間を指定してフェッチすれば繰り返しの予定は、繰り返しとして取得できます。期間を指定すれば、繰り返しは展開されて取得できます。繰り返しの予定のハンドリングは大変なので、展開してくれているほうがうれしいです。
FolderIDはカレンダーのIDですが、昨日の方法で取得したID(文字列)を指定します。FolderID fid = "昨日の文字列EwsID";でFolderIDになります。
では、実行すると
======================================== e040000008200E00074C5B7101A82E008000000002AE35E2725B6CB01000000000000000010000 0000D3A097CABC86A4C86FB3B5F9E463744- AAMkADI0Zjk2MGQ0LWEyZWYtNGViNC04NGU1LWYyOTgyNmI3YjMwYQBGAAAAAABhWrJE2t3vTIVm7PHG 9TnUBwCtvtb1WlXZTJEDqdu9EE7RAAAMYnVIAACtvtb1WlXZTJEDqdu9EE7RAAAMYplxAAA= じろう Start: 2011/01/17 18:30:00 End : 2011/01/17 19:30:00 Mod : 2011/01/17 18:01:40
最初のIDがical用のIDです。その下がEwsIDというやつです。なが~~~
でわでわ。
でわでわ。
0 コメント:
コメントを投稿