6

BPOSでExchangeWebサービスを呼び出してカレンダー情報を取得する必要があります。を使用しCalendarViewて、PropertySet取得するデータをできるだけ少なくしています。ただし、プロパティセットは限られているようです。カレンダーの予約をした方のが必要なので、EmailAddressで使えると思いAppointmentSchema.OrganizerましたPropertySet

予定全体を取得するとき、私はを介して電子メールを取得できますappt.Organizer.EmailAddress。しかし、以下のコードでは、Organizer.EmailAddressは常にnullです。トレースを有効にしてチェックしましたが、Organizer.Nameプロパティのみが送信され、他には何も送信されません。誰かがEmailAddress使用するときに取得する方法についての解決策を持っていPropertySetますか?

CalendarView view = new CalendarView(dtFrom, dtTo);
view.PropertySet = new PropertySet(ItemSchema.Subject);
view.PropertySet.Add(ItemSchema.Id);
view.PropertySet.Add(AppointmentSchema.Start);
view.PropertySet.Add(AppointmentSchema.End);
view.PropertySet.Add(AppointmentSchema.Organizer); // This should contain EmailAddress but it doesn't

Mailbox mailbox = new Mailbox("myemail@test.ab");
FolderId id = new FolderId(WellKnownFolderName.Calendar, mailbox);
CalendarFolder folder = CalendarFolder.Bind(service, id);
FindItemsResults<Appointment> findResults = folder.FindAppointments(view);
4

3 に答える 3

6

これはうまくいくはずです(私にとってはそうです):

service.FindAppointments(WellKnownFolderName.Calendar, new CalendarView(start, end)).Where(s => DateTime.Now < s.Start);
service.LoadPropertiesForItems(appointments, PropertySet.FirstClassProperties);
于 2011-07-20T18:25:27.000 に答える
1

オーガナイザーの予定と「EmailMessage.From」などの他のものの両方で完全なEmailAddressの詳細を入力することになると、EWSは少しバグがあることがわかりました。複数のアイテムに対してクエリを実行すると、EmailAddress プロパティが完全に設定されません。たとえば、次のような API を使用します。

Folder.FindItems
ExchangeService.FindAppointments

EmailAddress フィールドの表示名のみが入力されることがわかりました。

EmailAddress を完全に取得するには、特定のアイテムをロード/バインドし、関連する EmailAddress プロパティ (例: AppointmentSchema.Organizer) を指定する必要があることがわかりました。したがって、まったく同じプロパティをロードするように指定しても、一括クエリではなく単一の項目呼び出しを使用してロードしています。例:

ServiceObject.Load

どちらも ServiceObject から派生するため、Appointment と EmailMessage の両方で使用できます。適切なプロパティ セットが定義された Item.Bind を使用することも機能するはずです。

余談ですが、ここで言及されている EwsEditor のコードを見て、これを理解しました。

http://blogs.msdn.com/webdav_101/archive/2009/11/10/ews-has-more-happy-now-ews-managed-api-and-ewseditor.aspx

EwsEditor の使いやすさはかなり悪く、コードを理解するのにいくらかのトロールが必要ですが、少なくとも API の多くを実行する例を示しています。

于 2010-04-08T07:22:24.643 に答える
0
service.FindAppointments(WellKnownFolderName.Calendar, new CalendarView(start, end)).Where(s => DateTime.Now < s.Start);
service.LoadPropertiesForItems(appointments, PropertySet.FirstClassProperties);

それは私のために働いた。

于 2013-02-25T08:20:01.720 に答える