Erstellen einer Serie mit EWS in Exchange
Erfahren Sie, wie Sie besprechungsserien mit der EWS Managed API oder EWS in Exchange erstellen.
Das Erstellen eines termin- oder besprechungsserienden Termins oder einer Besprechung unterscheidet sich nicht so sehr vom Erstellen eines einzelnen Instanztermins oder einer Besprechung. Sie müssen nur einigen zusätzlichen serienbezogenen Eigenschaften Werte zuweisen. Diese werden für das Recurrence-Objekt eines ExchangeService.Appointment-Objekts (bei Verwendung der verwalteten EWS-API) oder für das untergeordnete Recurrence-Element eines CalendarItem-Elements (bei Verwendung von EWS) festgelegt. Eine Sache, die Sie beim Erstellen einer Besprechungsserie und nicht einer Besprechung mit einer einzelnen Instanz berücksichtigen sollten, ist, dass das von Ihnen erstellte Kalenderelement der wiederkehrende Master für eine Reihe ist. Eine Reihe von Eigenschaften wird nur für einen wiederkehrenden Master festgelegt. Diese Eigenschaften können Ihnen helfen, einzelne Instanzen in einer Reihe zu finden, zu ändern oder zu löschen. Aus diesem Grund kann es nützlich sein, die ID des wiederkehrenden Masters nachzuverfolgen, wenn Sie eine serielle Serie erstellen.
Tabelle 1. Eigenschaften, die für wiederkehrende Masterkalenderelemente festgelegt sind
EWS Managed API-Klasse oder -Eigenschaft | EWS-XML-Element | Beschreibung |
---|---|---|
Recurrence-Klasse Die Recurrence-Klasse ist die Basisklasse für eine abgeleitete Musterklasse, entweder IntervalPattern, RelativeYearlyPattern oder YearlyPattern. |
Serie (RecurrenceType) |
Enthält wiederholungsbezogene Informationen, einschließlich des Serienmusters (täglich, wöchentlich, monatlich usw.), Start- und Enddatum, Anzahl von Vorkommen usw. |
FirstOccurrence-Eigenschaft |
FirstOccurrence |
Enthält die Start- und Endzeiten sowie die Element-ID für die erste Besprechung in einer Reihe. |
LastOccurrence-Eigenschaft |
LastOccurrence |
Enthält die Start- und Endzeiten sowie die Element-ID für die letzte Besprechung in einer Reihe. |
ModifiedOccurrences-Eigenschaft |
ModifiedOccurrences |
Enthält den Satz aller Besprechungen in der Reihe, die vom ursprünglichen Serienmuster geändert wurden. |
DeletedOccurrences-Eigenschaft |
DeletedOccurrences |
Enthält den Satz aller Besprechungen in der Reihe, die aus dem ursprünglichen Serienmuster gelöscht wurden. |
Da Besprechungen im Wesentlichen Termine mit Teilnehmern sind, zeigen die Codebeispiele in diesem Artikel, wie Besprechungsserien erstellt werden. Wenn Sie eine Terminserie erstellen möchten, können Sie die Beispiele ändern, indem Sie Code entfernen, der sich auf Teilnehmer bezieht.
Erstellen einer Besprechungsserie mithilfe der verwalteten EWS-API
Das folgende Codebeispiel zeigt, wie eine Besprechungsserie erstellt wird. Weisen Sie zunächst den Eigenschaften eines Appointment-Objekts , das zum Erstellen einer Besprechung verwendet wird, Werte zu, verwenden Sie dann die Save-Methode , um die Serie in Ihrem Kalenderordner zu speichern und Besprechungsanfragen an Ihre Teilnehmer zu senden. Verwenden Sie abschließend die Appointment.Bind-Methode , um die Werte anzuzeigen, die auf dem wiederkehrenden Master für die soeben erstellte Serie festgelegt wurden.
In diesem Beispiel wird davon ausgegangen, das Sie sich an einem Exchange-Server angemeldet haben und das ExchangeService-Objekt service erhalten haben. Die -Methode in diesem Beispiel gibt die Element-ID des wiederkehrenden Masters der Serie zurück.
public static ItemId CreateARecurringMeeting(ExchangeService service)
{ Appointment recurrMeeting = new Appointment(service);
// Set the properties you need to create a meeting.
recurrMeeting.Subject = "Weekly Update Meeting";
recurrMeeting.Body = "Come hear about how the project is coming along!";
recurrMeeting.Start = DateTime.Now.AddDays(1);
recurrMeeting.End = recurrMeeting.Start.AddHours(1);
recurrMeeting.Location = "Contoso Main Gallery";
recurrMeeting.RequiredAttendees.Add("Mack@contoso.com");
recurrMeeting.RequiredAttendees.Add("Sadie@contoso.com");
recurrMeeting.RequiredAttendees.Add("Magdalena@contoso.com"); recurrMeeting.ReminderMinutesBeforeStart = 30;
DayOfTheWeek[] dow = new DayOfTheWeek[] { (DayOfTheWeek)recurrMeeting.Start.DayOfWeek };
// The following are the recurrence-specific properties for the meeting.
recurrMeeting.Recurrence = new Recurrence.WeeklyPattern(recurrMeeting.Start.Date, 1, dow);
recurrMeeting.Recurrence.StartDate = recurrMeeting.Start.Date;
recurrMeeting.Recurrence.NumberOfOccurrences = 10;
// This method results in in a CreateItem call to EWS.
recurrMeeting.Save(SendInvitationsMode.SendToAllAndSaveCopy);
// Retrieve the meeting subject and the properties that are set on a recurring master when a recurring series is created.
recurrMeeting = Appointment.Bind(service, recurrMeeting.Id, new PropertySet(AppointmentSchema.Subject,
AppointmentSchema.AppointmentType,
AppointmentSchema.Recurrence,
AppointmentSchema.FirstOccurrence,
AppointmentSchema.LastOccurrence,
AppointmentSchema.ModifiedOccurrences,
AppointmentSchema.DeletedOccurrences));
// Print out the recurring master properties.
Console.WriteLine("\nAppointment created: " + recurrMeeting.Subject);
Console.WriteLine("Appointment Type: {0}\n", recurrMeeting.AppointmentType);
Console.WriteLine("These property values are always null unless the item is a recurring master:\n");
Console.WriteLine("\tRecurrence pattern: {0}", recurrMeeting.Recurrence.ToString());
Console.WriteLine("\tRecurring series start Date: {0}", recurrMeeting.Recurrence.StartDate.ToString());
Console.WriteLine("\tRecurring series end Date: {0}",
recurrMeeting.Recurrence.EndDate == null ? "Null" : recurrMeeting.Recurrence.EndDate.ToString());
Console.WriteLine("\tHas end: {0}", recurrMeeting.Recurrence.HasEnd.ToString());
Console.WriteLine("\tNumber of occurrances: {0}", recurrMeeting.Recurrence.NumberOfOccurrences);
Console.WriteLine("\tLast 24 characters of the first occurrence's item ID:\t {0}",
recurrMeeting.FirstOccurrence.ItemId.ToString().Substring(144));
Console.WriteLine("\tLast 24 characters of the last occurrence's item ID:\t {0}",
recurrMeeting.LastOccurrence.ItemId.ToString().Substring(144));
Console.WriteLine("\tModified Occurrences: {0}",
(recurrMeeting.ModifiedOccurrences == null ? "Null" : recurrMeeting.ModifiedOccurrences.Count.ToString()));
Console.WriteLine("\tDeleted Occurrences: {0}",
recurrMeeting.DeletedOccurrences == null ? "Null" : recurrMeeting.ModifiedOccurrences.Count.ToString());
// Return the ID of the recurring master.
return recurrMeeting.Id;
}
Erstellen einer Besprechungsserie mithilfe von EWS
Die Anforderungs- und Antwort-XML in den folgenden Beispielen entsprechen Aufrufen zum Erstellen einer Besprechungsserie mithilfe der verwalteten EWS-API. Beachten Sie, dass die Anforderung außer dem Festlegen von serienspezifischen Werten für das Recurrence-Element im Wesentlichen mit der Anforderung übereinstimmt, die Sie zum Erstellen eines Einzelinstanztermins verwenden würden. Das folgende Beispiel zeigt den Anforderungs-XML-Code beim Erstellen einer Besprechung mithilfe des CreateItem-Vorgangs.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2010" />
<t:TimeZoneContext>
<t:TimeZoneDefinition Name="(UTC-08:00) Pacific Time (US &amp; Canada)" Id="Pacific Standard Time">
<t:Periods>
<t:Period Bias="P0DT8H0M0.0S" Name="Standard" Id="Std" />
<t:Period Bias="P0DT7H0M0.0S" Name="Daylight" Id="Dlt/1" />
<t:Period Bias="P0DT7H0M0.0S" Name="Daylight" Id="Dlt/2007" />
</t:Periods>
<t:TransitionsGroups>
<t:TransitionsGroup Id="0">
<t:RecurringDayTransition>
<t:To Kind="Period">Dlt/1</t:To>
<t:TimeOffset>P0DT2H0M0.0S</t:TimeOffset>
<t:Month>4</t:Month>
<t:DayOfWeek>Sunday</t:DayOfWeek>
<t:Occurrence>1</t:Occurrence>
</t:RecurringDayTransition>
<t:RecurringDayTransition>
<t:To Kind="Period">Std</t:To>
<t:TimeOffset>P0DT2H0M0.0S</t:TimeOffset>
<t:Month>10</t:Month>
<t:DayOfWeek>Sunday</t:DayOfWeek>
<t:Occurrence>-1</t:Occurrence>
</t:RecurringDayTransition>
</t:TransitionsGroup>
<t:TransitionsGroup Id="1">
<t:RecurringDayTransition>
<t:To Kind="Period">Dlt/2007</t:To>
<t:TimeOffset>P0DT2H0M0.0S</t:TimeOffset>
<t:Month>3</t:Month>
<t:DayOfWeek>Sunday</t:DayOfWeek>
<t:Occurrence>2</t:Occurrence>
</t:RecurringDayTransition>
<t:RecurringDayTransition>
<t:To Kind="Period">Std</t:To>
<t:TimeOffset>P0DT2H0M0.0S</t:TimeOffset>
<t:Month>11</t:Month>
<t:DayOfWeek>Sunday</t:DayOfWeek>
<t:Occurrence>1</t:Occurrence>
</t:RecurringDayTransition>
</t:TransitionsGroup>
</t:TransitionsGroups>
<t:Transitions>
<t:Transition>
<t:To Kind="Group">0</t:To>
</t:Transition>
<t:AbsoluteDateTransition>
<t:To Kind="Group">1</t:To>
<t:DateTime>2007-01-01T08:00:00.000Z</t:DateTime>
</t:AbsoluteDateTransition>
</t:Transitions>
</t:TimeZoneDefinition>
</t:TimeZoneContext>
</soap:Header>
<soap:Body>
<m:CreateItem SendMeetingInvitations="SendToAllAndSaveCopy">
<m:Items>
<t:CalendarItem>
<t:Subject>Weekly Update Meeting</t:Subject>
<t:Body BodyType="HTML">Come hear about how the Organized Observational Paradigm SkyNet project is coming along!</t:Body>
<t:ReminderMinutesBeforeStart>30</t:ReminderMinutesBeforeStart>
<t:Start>2014-03-08T13:21:32.868-08:00</t:Start>
<t:End>2014-03-08T14:21:32.868-08:00</t:End>
<t:Location>Contoso Main Gallery</t:Location>
<t:RequiredAttendees>
<t:Attendee>
<t:Mailbox>
<t:EmailAddress>Mack@contoso.com</t:EmailAddress>
</t:Mailbox>
</t:Attendee>
<t:Attendee>
<t:Mailbox>
<t:EmailAddress>Sadie@contoso.com</t:EmailAddress>
</t:Mailbox>
</t:Attendee>
<t:Attendee>
<t:Mailbox>
<t:EmailAddress>Magdalena@contoso.com</t:EmailAddress>
</t:Mailbox>
</t:Attendee>
</t:RequiredAttendees>
<t:Recurrence>
<t:WeeklyRecurrence>
<t:Interval>1</t:Interval>
<t:DaysOfWeek>Saturday</t:DaysOfWeek>
</t:WeeklyRecurrence>
<t:NumberedRecurrence>
<t:StartDate>2014-03-08-08:00</t:StartDate>
<t:NumberOfOccurrences>10</t:NumberOfOccurrences>
</t:NumberedRecurrence>
</t:Recurrence>
</t:CalendarItem>
</m:Items>
</m:CreateItem>
</soap:Body>
</soap:Envelope>
Das folgende Beispiel zeigt den Antwort-XML-Code, der vom CreateItem-Vorgang zurückgegeben wird.
Die Attribute ItemId und ChangeKey sind zur besseren Lesbarkeit gekürzt.
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="893" MinorBuildNumber="10"
Version="V2_10" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<m:CreateItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<m:ResponseMessages>
<m:CreateItemResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:Items>
<t:CalendarItem>
<t:ItemId Id="AAMkAD" ChangeKey="DwAAAB" />
</t:CalendarItem>
</m:Items>
</m:CreateItemResponseMessage>
</m:ResponseMessages>
</m:CreateItemResponse>
</s:Body>
</s:Envelope>
Das folgende Beispiel zeigt die Anforderungs-XML, die generiert wird, wenn Sie den GetItem-Vorgang und die ItemId für die erstellte Reihe verwenden, und Anforderungseigenschaften, die nur für einen wiederkehrenden Master festgelegt werden, um zu bestätigen, dass die vom Server beim Erstellen einer Serie zurückgegebene ItemId für einen wiederkehrenden Master gilt.
Die Attribute ItemId und ChangeKey sind zur besseren Lesbarkeit gekürzt.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2010" />
</soap:Header>
<soap:Body>
<m:GetItem>
<m:ItemShape>
<t:BaseShape>IdOnly</t:BaseShape>
<t:AdditionalProperties>
<t:FieldURI FieldURI="item:Subject" />
<t:FieldURI FieldURI="calendar:CalendarItemType" />
<t:FieldURI FieldURI="calendar:Recurrence" />
<t:FieldURI FieldURI="calendar:FirstOccurrence" />
<t:FieldURI FieldURI="calendar:LastOccurrence" />
<t:FieldURI FieldURI="calendar:ModifiedOccurrences" />
<t:FieldURI FieldURI="calendar:DeletedOccurrences" />
</t:AdditionalProperties>
</m:ItemShape>
<m:ItemIds>
<t:ItemId Id="AAMkAD" ChangeKey="DwAAAB" />
</m:ItemIds>
</m:GetItem>
</soap:Body>
</soap:Envelope>
Das folgende Beispiel zeigt den Antwort-XML-Code, der vom GetItem-Vorgang zurückgegeben wird.
Die Attribute ItemId und ChangeKey sind zur besseren Lesbarkeit gekürzt.
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="893" MinorBuildNumber="10"
Version="V2_10" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<m:GetItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<m:ResponseMessages>
<m:GetItemResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:Items>
<t:CalendarItem>
<t:ItemId Id="AAMkAD" ChangeKey="DwAAAB" />
<t:Subject>Weekly Update Meeting</t:Subject>
<t:CalendarItemType>RecurringMaster</t:CalendarItemType>
<t:Recurrence>
<t:WeeklyRecurrence>
<t:Interval>1</t:Interval>
<t:DaysOfWeek>Saturday</t:DaysOfWeek>
</t:WeeklyRecurrence>
<t:NumberedRecurrence>
<t:StartDate>2014-03-08-08:00</t:StartDate>
<t:NumberOfOccurrences>10</t:NumberOfOccurrences>
</t:NumberedRecurrence>
</t:Recurrence>
<t:FirstOccurrence>
<t:ItemId Id="AAMkAD" ChangeKey="DwAAABY" />
<t:Start>2014-03-08T21:21:00Z</t:Start>
<t:End>2014-03-08T22:21:00Z</t:End>
<t:OriginalStart>2014-03-08T21:21:00Z</t:OriginalStart>
</t:FirstOccurrence>
<t:LastOccurrence>
<t:ItemId Id="AAMkAD" ChangeKey="DwAAABY" />
<t:Start>2014-05-10T20:21:00Z</t:Start>
<t:End>2014-05-10T21:21:00Z</t:End>
<t:OriginalStart>2014-05-10T20:21:00Z</t:OriginalStart>
</t:LastOccurrence>
</t:CalendarItem>
</m:Items>
</m:GetItemResponseMessage>
</m:ResponseMessages>
</m:GetItemResponse>
</s:Body>
</s:Envelope>