Verwalten von Wiederholungen

Arbeiten mit täglichen Wiederholungen

Aspose.Email unterstützt die Erstellung von täglichen Wiederholungen mithilfe von MapiCalendarDailyRecurrencePattern. Drei verschiedene Endtypen für Mapi-Kalenderwiederholungen können verwendet werden, darunter EndAfterNOccurrences, EndAfterDate und NeverEnd. Dieser Abschnitt demonstriert die Erstellung verschiedener täglicher Wiederholungsmuster.

Tägliche Wiederholungen mit Auftretensanzahl

Bei diesem Wiederholungstyp muss die Anzahl der Wiederholungen zusammen mit weiteren Angaben wie folgt gesetzt werden:

  1. Setzen Sie Start-, End- und Fälligkeitsdatum.
  2. Erstellen Sie ein MapiTask.
  3. Setzen Sie den Aufgabenstatus auf NichtZugewiesen.
  4. Erstellen Sie das tägliche Wiederholungs‑Objekt, indem Sie Eigenschaften wie PatternType, Period, WeekStartDay, EndType und OccurenceCount festlegen.
  5. Setzen Sie die Eigenschaft MapiTask.Recurrence auf dieses tägliche Wiederholungs‑Objekt.
  6. Speichern Sie diese Nachricht auf der Festplatte.

Der folgende Codeausschnitt zeigt, wie Sie eine Aufgabe mit dem Wiederholungsendtyp EndAfterNOccurrence erstellen.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

TimeZone localZone = TimeZone.CurrentTimeZone;
TimeSpan timeSpan = localZone.GetUtcOffset(DateTime.Now);
DateTime StartDate = new DateTime(2015, 7, 16);
StartDate = StartDate.Add(timeSpan);

DateTime DueDate = new DateTime(2015, 7, 16);
DateTime endByDate = new DateTime(2015, 8, 1);
DueDate = DueDate.Add(timeSpan);
endByDate = endByDate.Add(timeSpan);
 
MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate);
task.State = MapiTaskState.NotAssigned;

// Set the Daily recurrence
var rec = new MapiCalendarDailyRecurrencePattern
{
    PatternType = MapiCalendarRecurrencePatternType.Day,
    Period = 1,
    WeekStartDay = DayOfWeek.Sunday,
    EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=DAILY"),
};

if (rec.OccurrenceCount==0)
{
    rec.OccurrenceCount = 1;
}

task.Recurrence = rec;
task.Save(dataDir + "Daily_out.msg", TaskSaveFormat.Msg);

Die folgende Funktion kann verwendet werden, um die Anzahl der Ereignisse zwischen den beiden Daten zu berechnen:

private static uint GetOccurrenceCount(DateTime start, DateTime endBy, string rrule)
{
    CalendarRecurrence pattern = new CalendarRecurrence(string.Format("DTSTART:{0}\r\nRRULE:{1}", start.ToString("yyyyMMdd"), rrule));
    DateCollection dates = pattern.GenerateOccurrences(start, endBy);
    return (uint)dates.Count;
}

Festlegen des Werts für die Anzahl der Wiederholungen

Das folgende Code‑Snippet zeigt, wie man den Wert für die Anzahl der Wiederholungen festlegt.

// Set the Daily recurrence
var record = new MapiCalendarDailyRecurrencePattern
{
    PatternType = MapiCalendarRecurrencePatternType.Day,
    Period = 1,
    WeekStartDay = DayOfWeek.Sunday,
    EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
    OccurrenceCount = 5,
};
task.Recurrence = record;

Tägliche Wiederholungen: Typ EndAfterDate

"End By"-Option im Mapi Task wird erreicht, indem die OccurrenceCount-Eigenschaft gesetzt wird, die von der Funktion GetOccurrenceCount() berechnet wird. Diese Funktion erhält das Startdatum, das Enddatum und den RRULE-String.

Tägliche Wiederholungen: Festlegen des Jeden-Tag-Werts

Das folgende Code‑Snippet zeigt, wie man den Period‑Wert auf 1 und den INTERVAL‑Wert ebenfalls auf 1 im RRULE‑String setzt.

// Set the Daily recurrence
var record = new MapiCalendarDailyRecurrencePattern
{
    PatternType = MapiCalendarRecurrencePatternType.Day,
    Period = 1,
    EndType = MapiCalendarRecurrenceEndType.EndAfterDate,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=DAILY;INTERVAL=1"),
    EndDate = endByDate
};

Der Wert Every Day kann, wie im folgenden Beispiel gezeigt, auf jeden passenden Wert gesetzt werden:


// Set the Daily recurrence
var record = new MapiCalendarDailyRecurrencePattern
{
	PatternType = MapiCalendarRecurrencePatternType.Day,
	Period = 2,
	EndType = MapiCalendarRecurrenceEndType.EndAfterDate,
	OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=DAILY;INTERVAL=2"),
};

Tägliche Wiederholungen: Typ NeverEnd

Der Endtyp kann mit MapiCalendarRecurrenceEndType.NeverEnd festgelegt werden. Period oder INTERVAL kann im folgenden Beispiel auf den gewünschten Wert, beispielsweise 1, gesetzt werden.

// Set the Daily recurrence
var record = new MapiCalendarDailyRecurrencePattern
{
    PatternType = MapiCalendarRecurrencePatternType.Day,
    Period = 1,
    EndType = MapiCalendarRecurrenceEndType.NeverEnd,
};

Arbeiten mit wöchentlichen Wiederholungen

Aspose.Email bietet umfangreiche Funktionen zur Erstellung wöchentlicher Wiederholungen mit MapiCalendarWeeklyRecurrencePattern. Drei verschiedene Endtypen für Mapi‑Kalenderwiederholungen können verwendet werden, darunter EndAfterNOccurrences, EndAfterDate und NeverEnd. Dieser Abschnitt demonstriert die Erstellung verschiedener wöchentlicher Wiederholungsmuster.

Wöchentliche Wiederholungen: Typ EndAfterNOccurrences

Bei diesem Wiederholungstyp muss die Anzahl der Wiederholungen zusammen mit weiteren Angaben wie folgt gesetzt werden:

  1. Setzen Sie Start-, End- und Fälligkeitsdatum.
  2. Erstellen Sie ein MapiTask.
  3. Setzen Sie den Aufgabenstatus auf NichtZugewiesen.
  4. Erstellen Sie das wöchentliche Wiederholungsobjekt, indem Sie Eigenschaften wie PatternType, Period, WeekStartDay, EndType und OccurrenceCount festlegen.
  5. Setzen Sie die Eigenschaft MapiTask.Recurrence auf dieses wöchentliche Wiederholungsobjekt.
  6. Speichern Sie diese Nachricht auf der Festplatte.

Das folgende Code‑Snippet zeigt, wie Sie eine Aufgabe mit dem Wiederholungsendtyp EndAfterNOccurrence erstellen.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();
TimeZone localZone = TimeZone.CurrentTimeZone;
TimeSpan ts = localZone.GetUtcOffset(DateTime.Now);
DateTime StartDate = new DateTime(2015, 7, 16);
StartDate = StartDate.Add(ts);

DateTime DueDate = new DateTime(2015, 7, 16);
DateTime endByDate = new DateTime(2015, 9, 1);
DueDate = DueDate.Add(ts);
endByDate = endByDate.Add(ts);

MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate);
task.State = MapiTaskState.NotAssigned;

// Set the weekly recurrence
var rec = new MapiCalendarWeeklyRecurrencePattern
{
    EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
    PatternType = MapiCalendarRecurrencePatternType.Week,
    Period = 1,
    WeekStartDay = DayOfWeek.Sunday,
    DayOfWeek = MapiCalendarDayOfWeek.Friday,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR"),
};

if (rec.OccurrenceCount == 0)
{
    rec.OccurrenceCount = 1;
}

task.Recurrence = rec;
task.Save(dataDir + "Weekly_out.msg", TaskSaveFormat.Msg);

Die folgende Funktion kann verwendet werden, um die Anzahl der Ereignisse zwischen den beiden Daten zu berechnen:

private static uint GetOccurrenceCount(DateTime start, DateTime endBy, string rrule)
{            
    CalendarRecurrence pattern = new CalendarRecurrence(string.Format("DTSTART:{0}\r\nRRULE:{1}", start.ToString("yyyyMMdd"),rrule));            
    DateCollection dates = pattern.GenerateOccurrences(start, endBy);            
    return (uint)dates.Count;
}

Mehrere Tage einer Woche auswählen

Das folgende Code‑Snippet zeigt, wie man mehrere Tage einer Woche auswählt.

// Set the weekly recurrence
var rec = new MapiCalendarWeeklyRecurrencePattern
{
    EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
    PatternType = MapiCalendarRecurrencePatternType.Week,
    Period = 1,
    WeekStartDay = DayOfWeek.Sunday,
    DayOfWeek = MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO"),
};

Mehrere Tage einer Woche auswählen und Intervalle festlegen

Das folgende Code‑Snippet zeigt, wie man mehrere Tage einer Woche auswählt und Intervalle festlegt.

// Set the weekly recurrence
var rec = new MapiCalendarWeeklyRecurrencePattern
{
    EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
    PatternType = MapiCalendarRecurrencePatternType.Week,
    Period = 2,
    WeekStartDay = DayOfWeek.Sunday,
    DayOfWeek = MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO;INTERVAL=2"),
};

Wöchentliche Wiederholungen: Typ EndAfterDate

"End By"-Option im Mapi Task wird erreicht, indem die OccurrenceCount-Eigenschaft gesetzt wird, die von der Funktion GetOccurrenceCount() berechnet wird. Diese Funktion erhält das Startdatum, das Enddatum und den RRULE-String.

Wöchentliche Wiederholungen: Festlegen des Jeden-Tag-Werts

Das folgende Code‑Snippet zeigt, wie man den Period‑Wert auf 1 und den INTERVAL‑Wert ebenfalls auf 1 im RRULE‑String setzt.

// Set the weekly recurrence
var rec = new MapiCalendarWeeklyRecurrencePattern
{
    EndType = MapiCalendarRecurrenceEndType.EndAfterDate,
    PatternType = MapiCalendarRecurrencePatternType.Week,
    Period = 1,
    WeekStartDay = DayOfWeek.Sunday,
    DayOfWeek = MapiCalendarDayOfWeek.Friday,
    EndDate = endByDate,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR;INTERVAL=1"),
};

Der Wert Every Day kann auf einen beliebigen passenden Wert gesetzt werden und mehrere Tage können, wie im folgenden Beispiel gezeigt, ausgewählt werden:

var record = new MapiCalendarWeeklyRecurrencePattern
{
    EndType = MapiCalendarRecurrenceEndType.EndAfterDate,
    PatternType = MapiCalendarRecurrencePatternType.Week,
    Period = 2,
    WeekStartDay = DayOfWeek.Sunday,
    EndDate = endByDate,
    DayOfWeek = MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO;INTERVAL=2"),
};

Wöchentliche Wiederholungen: Typ NeverEnd

Der Endtyp kann mit MapiCalendarRecurrenceEndType.NeverEnd festgelegt werden. Period oder INTERVAL kann im folgenden Beispiel auf den gewünschten Wert, beispielsweise 1, gesetzt werden.

// Set the weekly recurrence
var recurrence = new MapiCalendarWeeklyRecurrencePattern
{
    EndType = MapiCalendarRecurrenceEndType.NeverEnd,
    PatternType = MapiCalendarRecurrencePatternType.Week,
    Period = 1,
    WeekStartDay = DayOfWeek.Sunday,
    DayOfWeek = MapiCalendarDayOfWeek.Friday,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR"),
};

Arbeiten mit monatlichen Wiederholungen

Aspose.Email unterstützt die Erstellung monatlicher Wiederholungen mit MapiCalendarMonthlyRecurrencePattern. Drei verschiedene Endtypen für Mapi‑Kalenderwiederholungen können verwendet werden, darunter EndAfterNOccurrences, EndAfterDate und NeverEnd. Dieser Abschnitt demonstriert die Erstellung verschiedener monatlicher Wiederholungsmuster.

Monatliche Wiederholungen: Typ EndAfterNOccurrences

Bei diesem Wiederholungstyp muss die Anzahl der Wiederholungen zusammen mit weiteren Angaben wie folgt gesetzt werden:

  1. Setzen Sie Start-, End- und Fälligkeitsdatum.
  2. Erstellen Sie ein MapiTask.
  3. Setzen Sie den Aufgabenstatus auf NichtZugewiesen.
  4. Erstellen Sie das monatliche Wiederholungsobjekt, indem Sie Eigenschaften wie PatternType, Period, WeekStartDay, EndType und OccurrenceCount festlegen.
  5. Setzen Sie die Eigenschaft MapiTask.Recurrence auf dieses monatliche Wiederholungsobjekt.
  6. Speichern Sie diese Nachricht auf der Festplatte.

Das folgende Code‑Snippet zeigt, wie Sie eine Aufgabe mit dem Wiederholungsendtyp EndAfterNOccurrence erstellen.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();
TimeZone localZone = TimeZone.CurrentTimeZone;
TimeSpan ts = localZone.GetUtcOffset(DateTime.Now);
DateTime StartDate = new DateTime(2015, 7, 16);
StartDate = StartDate.Add(ts);

DateTime DueDate = new DateTime(2015, 7, 16);
DateTime endByDate = new DateTime(2015, 12, 31);
DueDate = DueDate.Add(ts);
endByDate = endByDate.Add(ts);

MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate);
task.State = MapiTaskState.NotAssigned;

// Set the Monthly recurrence
var rec = new MapiCalendarMonthlyRecurrencePattern
{
    Day = 15,
    Period = 1,
    PatternType = MapiCalendarRecurrencePatternType.Month,
    EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=MONTHLY;BYMONTHDAY=15;INTERVAL=1"),
    WeekStartDay = DayOfWeek.Monday,

};

if (rec.OccurrenceCount == 0)
{
    rec.OccurrenceCount = 1;
}

task.Recurrence = rec;
//task.Save(dataDir + "Monthly_out.msg", TaskSaveFormat.Msg);

Die folgende Funktion kann verwendet werden, um die Anzahl der Ereignisse zwischen den beiden Daten zu berechnen:

private static uint GetOccurrenceCount(DateTime start, DateTime endBy, string rrule)
{
    CalendarRecurrence pattern = new CalendarRecurrence(string.Format("DTSTART:{0}\r\nRRULE:{1}", start.ToString("yyyyMMdd"), rrule));
    DateCollection dates = pattern.GenerateOccurrences(start, endBy);       
    return (uint)dates.Count;
}

Feste Anzahl von Vorkommen festlegen

Das folgende Code‑Snippet zeigt, wie Sie eine feste Anzahl von Vorkommen festlegen.

// Set the Monthly recurrence
var records = new MapiCalendarMonthlyRecurrencePattern
{
    Day = 15,
    Period = 1,
    PatternType = MapiCalendarRecurrencePatternType.Month,
    EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
    OccurrenceCount = 5,
    WeekStartDay = DayOfWeek.Monday
};

Monatliche Wiederholungen: Typ EndAfterDate

"End By"-Option im Mapi Task wird erreicht, indem die OccurrenceCount‑Eigenschaft gesetzt wird, die von der Funktion GetOccurrenceCount() berechnet wird. Diese Funktion erhält das Startdatum, das Enddatum und den RRULE-String. Das folgende Code‑Snippet zeigt, wie Sie eine Wiederholung am 15. jedes Monats zwischen Start- und Enddatum erstellen.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

TimeZone localZone = TimeZone.CurrentTimeZone;
TimeSpan ts = localZone.GetUtcOffset(DateTime.Now);
DateTime StartDate = new DateTime(2015, 7, 1);
StartDate = StartDate.Add(ts);

DateTime DueDate = new DateTime(2015, 7, 1);
DateTime endByDate = new DateTime(2015, 12, 31);
DueDate = DueDate.Add(ts);
endByDate = endByDate.Add(ts);

MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate);
task.State = MapiTaskState.NotAssigned;

// Set the Monthly recurrence
var recurrence = new MapiCalendarMonthlyRecurrencePattern
{
    Day = 15,
    Period = 1,
    PatternType = MapiCalendarRecurrencePatternType.Month,
    EndType = MapiCalendarRecurrenceEndType.EndAfterDate,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=MONTHLY;BYMONTHDAY=15;INTERVAL=1"),
    WeekStartDay = DayOfWeek.Monday,
    EndDate = endByDate
};

task.Recurrence = recurrence;
//task.Save(dataDir + "SetMonthlyEndAfterDateRecurrence_out.msg", TaskSaveFormat.Msg);

Monatliche Wiederholungen: Typ NeverEnd

Das folgende Code‑Snippet zeigt, wie Sie den Endtyp mit MapiCalendarRecurrenceEndType.NeverEnd festlegen.

var recurrence = new MapiCalendarMonthlyRecurrencePattern
{
    Day = 15,
    Period = 1,
    PatternType = MapiCalendarRecurrencePatternType.Month,
    EndType = MapiCalendarRecurrenceEndType.NeverEnd,
    WeekStartDay = DayOfWeek.Monday,
};

Arbeiten mit jährlichen Wiederholungen

Aspose.Email unterstützt die Erstellung jährlicher Wiederholungen mit MapiCalendarMonthlyRecurrencePattern. Durch Setzen der Period‑Eigenschaft auf 12 können wir das jährliche Wiederholungsmuster erreichen. Drei verschiedene Endtypen für Mapi‑Kalenderwiederholungen können verwendet werden, darunter EndAfterNOccurrences, EndAfterDate und NeverEnd. Dieser Abschnitt demonstriert die Erstellung verschiedener jährlicher Wiederholungsmuster.

Jährliche Wiederholungen: Typ EndAfterNOccurrences

Bei diesem Wiederholungstyp muss die Anzahl der Wiederholungen zusammen mit weiteren Angaben wie folgt gesetzt werden:

  1. Setzen Sie Start-, End- und Fälligkeitsdatum.
  2. Erstellen Sie ein MapiTask.
  3. Setzen Sie den Aufgabenstatus auf NichtZugewiesen.
  4. Erstellen Sie das monatliche Wiederholungsobjekt, indem Sie Eigenschaften wie PatternType, Period, WeekStartDay, EndType und OccurrenceCount festlegen.
  5. Setzen Sie die Eigenschaft MapiTask.Recurrence auf dieses monatliche Wiederholungsobjekt, um die jährliche Wiederholung zu erreichen.
  6. Speichern Sie diese Nachricht auf der Festplatte.

Das folgende Code‑Snippet zeigt, wie Sie eine Aufgabe mit dem Wiederholungsendtyp EndAfterNOccurrence erstellen.


TimeZone localZone = TimeZone.CurrentTimeZone;
TimeSpan ts = localZone.GetUtcOffset(DateTime.Now);
DateTime StartDate = new DateTime(2015, 7, 1);
StartDate = StartDate.Add(ts);
DateTime DueDate = new DateTime(2015, 7, 1);
DateTime endByDate = new DateTime(2020, 12, 31);
DueDate = DueDate.Add(ts);
endByDate = endByDate.Add(ts);
MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate);
task.State = MapiTaskState.NotAssigned;

// Set the Yearly recurrence
var recurrence = new MapiCalendarMonthlyRecurrencePattern
{
	Day = 15,
	Period = 12,
	PatternType = MapiCalendarRecurrencePatternType.Month,
	EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
	OccurrenceCount = 3,
};
task.Recurrence = recurrence;
task.Save("Yearly.msg", TaskSaveFormat.Msg);

Jährliche Wiederholungen: Typ EndAfterDate

"End By"-Option im Mapi Task wird erreicht, indem die OccurrenceCount‑Eigenschaft gesetzt wird, die von der Funktion GetOccurrenceCount() berechnet wird. Diese Funktion erhält das Startdatum, das Enddatum und den RRULE-String. Das folgende Code‑Snippet zeigt, wie Sie eine Wiederholung am 15. jedes siebten Monats zwischen Start- und Enddatum erstellen.

// Set the Yearly recurrence
var rec = new MapiCalendarMonthlyRecurrencePattern
{
    Day = 15,
    Period = 12,
    PatternType = MapiCalendarRecurrencePatternType.Month,
    EndType = MapiCalendarRecurrenceEndType.EndAfterDate,
    EndDate = endByDate,
    OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=7;INTERVAL=1"),
};
task.Recurrence = rec;

Jährliche Wiederholungen: Typ NeverEnd

Das folgende Code‑Snippet zeigt, wie Sie den Endtyp mit MapiCalendarRecurrenceEndType.NeverEnd festlegen.

// Set the Yearly recurrence
var recurrence = new MapiCalendarMonthlyRecurrencePattern
{
    Day = 15,
    Period = 12,
    PatternType = MapiCalendarRecurrencePatternType.Month,
    EndType = MapiCalendarRecurrenceEndType.NeverEnd,
};            

Wiederholung aus Wiederholungsregel erzeugen

Die Aspose.Email‑API bietet die Möglichkeit, ein Wiederholungsmuster aus einer Wiederholungsregel (RRULE) zu erzeugen. Sie analysiert die Informationen aus dem RRULE gemäß den RFC‑5545 iCal‑Spezifikationen und erzeugt das Wiederholungsmuster mit der Methode MapiCalendarRecurrencePatternFactory.FromString. Das folgende Code‑Snippet zeigt, wie Sie ein Wiederholungsmuster aus einer Wiederholungsregel generieren.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

DateTime startDate = new DateTime(2015, 7, 16);
DateTime endDate = new DateTime(2015, 8, 1);
MapiCalendar app1 = new MapiCalendar("test location", "test summary", "test description", startDate, endDate);

app1.StartDate = startDate;
app1.EndDate = endDate;

string pattern = "DTSTART;TZID=Europe/London:20150831T080000\r\nDTEND;TZID=Europe/London:20150831T083000\r\nRRULE:FREQ=DAILY;INTERVAL=1;COUNT=7\r\nEXDATE:20150831T070000Z,20150904T070000Z";
app1.Recurrence.RecurrencePattern = MapiCalendarRecurrencePatternFactory.FromString(pattern);

Ein Anhang zu wiederkehrenden Kalenderereignissen hinzufügen

Die Aspose.Email‑API ermöglicht das Hinzufügen von Anhängen zu wiederkehrenden Kalenderelementen.

DateTime startDate = new DateTime(2018, 7, 19).AddHours(12);
MapiCalendar calendar = new MapiCalendar("location1", "summary1", "description1", startDate, startDate.AddHours(1));

MapiCalendarEventRecurrence recurrence = new MapiCalendarEventRecurrence();
MapiCalendarRecurrencePattern pattern = recurrence.RecurrencePattern = new MapiCalendarDailyRecurrencePattern();
pattern.PatternType = MapiCalendarRecurrencePatternType.Day;
pattern.Period = 1;
pattern.EndType = MapiCalendarRecurrenceEndType.NeverEnd;

DateTime exceptionDate = startDate.AddDays(3);
MapiCalendarExceptionInfo exception = new MapiCalendarExceptionInfo
{
    Location = "exceptionLoc",
    Subject = "exceptionSubj",
    Body = "exceptionBody",
    OriginalStartDate = exceptionDate,
    StartDateTime = exceptionDate,
    EndDateTime = exceptionDate.AddHours(5),
    Attachments = new MapiAttachmentCollection(calendar)
};
exception.Attachments.Add("file.txt", Encoding.ASCII.GetBytes("hello, world!"));

pattern.Exceptions.Add(exception);
pattern.ModifiedInstanceDates.Add(exceptionDate);
pattern.DeletedInstanceDates.Add(exceptionDate);
calendar.Recurrence = recurrence;

using (var newPst = PersonalStorage.Create(dataDir + "AddAttachmentToMapiExceptionInfo.pst", FileFormatVersion.Unicode))
{
    var newFolder = newPst.CreatePredefinedFolder("Calendar", StandardIpmFolder.Appointments);
    newFolder.AddMapiMessageItem(calendar);
}