Werken met terugkerende gebeurtenissen

Werken met dagelijkse herhalingen

Aspose.Email ondersteunt het maken van dagelijkse herhalingen met behulp van MapiCalendarDailyRecurrencePattern. Drie verschillende Mapi‑agenda‑herhalings‑eindtypes kunnen worden gebruikt, inclusief EndAfterNOccurrences, EndAfterDate en NeverEnd. Deze sectie toont de creatie van verschillende dagelijkse herhalingspatronen.

Dagelijkse herhalingen: EndAfterNOccurrence‑type

Bij dit type herhaling moet het aantal herhalingen samen met andere informatie als volgt worden ingesteld:

  1. Stel start-, eind- en vervaldatum in.
  2. Maak een MapiTask.
  3. Stel de taakstatus in op NotAssigned.
  4. Maak het dagelijkse herhalingsobject aan door de eigenschappen zoals PatternType, Period, WeekStartDay, EndType en OccurenceCount in te stellen.
  5. Stel de MapiTask.setRecurrence‑eigenschap in op dit dagelijkse herhalingsobject.
  6. Sla dit bericht op de schijf op.

Het volgende codefragment laat zien hoe je een taak maakt met het herhalings‑eindtype EndAfterNOccurrence.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = getDate(2015, 7, 16);
Date dueDate = getDate(2015, 7, 16);
Date endByDate = getDate(2015, 8, 1);
 
MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern rec = new MapiCalendarDailyRecurrencePattern();
rec.setPatternType(MapiCalendarRecurrencePatternType.Day);
rec.setPeriod(1);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=DAILY"));

if (rec.getOccurrenceCount() == 0)
{
    rec.setOccurrenceCount(1);
}

task.setRecurrence(rec);
task.save(dataDir + "Daily_out.msg", TaskSaveFormat.Msg);

De volgende functie kan worden gebruikt om het aantal evenementen tussen de twee data te berekenen:

private static long getOccurrenceCount(Date start, Date endBy, String rrule)
{
    DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
    CalendarRecurrence pattern = new CalendarRecurrence("DTSTART:" + formatter.format(start) + "\r\nRRULE:" + rrule);
    DateCollection dates = pattern.generateOccurrences(start, endBy);
    return dates.size();
}

Het aantal herhalingen instellen

Het volgende codefragment laat zien hoe je de waarde voor het aantal herhalingen instelt.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern record = new MapiCalendarDailyRecurrencePattern();

record.setPatternType(MapiCalendarRecurrencePatternType.Day);
record.setPeriod(1);
record.setWeekStartDay(DayOfWeek.Sunday);
record.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
record.setOccurrenceCount(5);
task.setRecurrence(record);

Dagelijkse herhalingen: EndAfterDate‑type

De "End By"‑optie in de Mapi‑taak wordt bereikt door de OccurrenceCount‑eigenschap in te stellen, berekend door de getOccurrenceCount()‑functie. Deze functie neemt een startdatum, einddatum en RRULE‑string.

Dagelijkse herhalingen: Instellen van de Every Day‑waarde

Het volgende codefragment laat zien hoe je de period‑waarde op 1 en de INTERVAL‑waarde op 1 zet in de RRULE‑string.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern record = new MapiCalendarDailyRecurrencePattern();

record.setPatternType(MapiCalendarRecurrencePatternType.Day);
record.setPeriod(1);
record.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
record.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=DAILY;INTERVAL=1"));
record.setEndDate(endByDate);

De Every Day‑waarde kan op elke passende waarde worden gezet zoals in het volgende voorbeeld:

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern record = new MapiCalendarDailyRecurrencePattern();

record.setPatternType(MapiCalendarRecurrencePatternType.Day);
record.setPeriod(2);
record.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
record.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=DAILY;INTERVAL=2"));

Dagelijkse herhalingen: NeverEnd‑type

Het eindtype kan worden ingesteld met MapiCalendarRecurrenceEndType.NeverEnd. Period of INTERVAL kan in het volgende voorbeeld op de gewenste waarde (bijv. 1) worden gezet.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern record = new MapiCalendarDailyRecurrencePattern();

record.setPatternType(MapiCalendarRecurrencePatternType.Day);
record.setPeriod(1);
record.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);

Werken met wekelijkse herhalingen

Aspose.Email biedt uitgebreide functionaliteit voor het maken van wekelijkse herhalingen met behulp van MapiCalendarWeeklyRecurrencePattern. Drie verschillende Mapi‑agenda‑herhalings‑eindtypes kunnen worden gebruikt, inclusief EndAfterNOccurrences, EndAfterDate en NeverEnd. Deze sectie toont de creatie van verschillende wekelijkse herhalingspatronen.

Wekelijkse herhalingen: EndAfterNOccurrences‑type

Bij dit type herhaling moet het aantal herhalingen samen met andere informatie als volgt worden ingesteld:

  1. Stel start-, eind- en vervaldatum in.
  2. Maak een MapiTask.
  3. Stel de taakstatus in op NotAssigned.
  4. Maak het wekelijkse herhalingsobject aan door de eigenschappen zoals PatternType, Period, WeekStartDay, EndType en OccurenceCount in te stellen.
  5. Stel de MapiTask.setRecurrence‑eigenschap in op dit wekelijkse herhalingsobject.
  6. Sla dit bericht op de schijf op.

Het volgende codefragment laat zien hoe je een taak maakt met het herhalings‑eindtype EndAfterNOccurrence.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = getDate(2015, 7, 16);
Date dueDate = getDate(2015, 7, 16);
Date endByDate = getDate(2015, 9, 1);

MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern rec = new MapiCalendarWeeklyRecurrencePattern();
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setPatternType(MapiCalendarRecurrencePatternType.Week);
rec.setPeriod(1);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setDayOfWeek(MapiCalendarDayOfWeek.Friday);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR"));

if (rec.getOccurrenceCount() == 0)
{
    rec.setOccurrenceCount(1);
}

task.setRecurrence(rec);
task.save(dataDir + "Weekly_out.msg", TaskSaveFormat.Msg);

De volgende functie kan worden gebruikt om het aantal evenementen tussen de twee data te berekenen:

private static long getOccurrenceCount(Date start, Date endBy, String rrule)
{
    DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
    CalendarRecurrence pattern = new CalendarRecurrence("DTSTART:" + formatter.format(start) + "\r\nRRULE:" + rrule);
    DateCollection dates = pattern.generateOccurrences(start, endBy);
    return dates.size();
}

Meerdere dagen in een week selecteren

Het volgende codefragment laat zien hoe je meerdere dagen in een week selecteert.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern rec = new MapiCalendarWeeklyRecurrencePattern();

rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setPatternType(MapiCalendarRecurrencePatternType.Week);
rec.setPeriod(1);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setDayOfWeek(MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO"));

Meerdere dagen in een week selecteren en intervallen instellen

Het volgende codefragment laat zien hoe je meerdere dagen in een week selecteert en intervallen instelt.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern rec = new MapiCalendarWeeklyRecurrencePattern();
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setPatternType(MapiCalendarRecurrencePatternType.Week);
rec.setPeriod(2);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setDayOfWeek(MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO;INTERVAL=2"));

Wekelijkse herhalingen: EndAfterDate‑type

De "End By"‑optie in de Mapi‑taak wordt bereikt door de OccurrenceCount‑eigenschap in te stellen, berekend door de getOccurrenceCount()‑functie. Deze functie neemt een startdatum, einddatum en RRULE‑string.

Wekelijkse herhalingen: Instellen van de Every Day‑waarde

Het volgende codefragment laat zien hoe je de period‑waarde op 1 en de INTERVAL‑waarde op 1 zet in de RRULE‑string.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern rec = new MapiCalendarWeeklyRecurrencePattern();
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
rec.setPatternType(MapiCalendarRecurrencePatternType.Week);
rec.setPeriod(1);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setDayOfWeek(MapiCalendarDayOfWeek.Friday);
rec.setEndDate(endByDate);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR;INTERVAL=1"));

De Every Day‑waarde kan op elke passende waarde worden gezet en meerdere dagen kunnen worden geselecteerd zoals in het volgende voorbeeld:

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiCalendarWeeklyRecurrencePattern record = new MapiCalendarWeeklyRecurrencePattern();
record.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
record.setPatternType(MapiCalendarRecurrencePatternType.Week);
record.setPeriod(2);
record.setWeekStartDay(DayOfWeek.Sunday);
record.setEndDate(endByDate);
record.setDayOfWeek(MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday);
record.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO;INTERVAL=2"));

Wekelijkse herhalingen: NeverEnd‑type

Het eindtype kan worden ingesteld met MapiCalendarRecurrenceEndType.NeverEnd. Period of INTERVAL kan in het volgende voorbeeld op de gewenste waarde (bijv. 1) worden gezet.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern recurrence = new MapiCalendarWeeklyRecurrencePattern();
recurrence.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Week);
recurrence.setPeriod(1);
recurrence.setWeekStartDay(DayOfWeek.Sunday);
recurrence.setDayOfWeek(MapiCalendarDayOfWeek.Friday);
recurrence.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR"));

Werken met maandelijkse herhalingen

Aspose.Email ondersteunt het maken van maandelijkse herhalingen met behulp van MapiCalendarMonthlyRecurrencePattern. Drie verschillende Mapi‑agenda‑herhalings‑eindtypes kunnen worden gebruikt, inclusief EndAfterNOccurrences, EndAfterDate en NeverEnd. Deze sectie toont de creatie van verschillende maandelijkse herhalingspatronen.

Maandelijkse herhalingen: EndAfterNOccurrences‑type

Bij dit type herhaling moet het aantal herhalingen samen met andere informatie als volgt worden ingesteld:

  1. Stel start-, eind- en vervaldatum in.
  2. Maak een MapiTask.
  3. Stel de taakstatus in op NotAssigned.
  4. Maak het maandelijkse herhalingsobject aan door de eigenschappen zoals PatternType, Period, WeekStartDay, EndType en OccurenceCount in te stellen.
  5. Stel de MapiTask.setRecurrence‑eigenschap in op dit maandelijkse herhalingsobject.
  6. Sla dit bericht op de schijf op.

Het volgende codefragment laat zien hoe je een taak maakt met het herhalings‑eindtype EndAfterNOccurrence.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = getDate(2015, 7, 16);
Date DueDate = getDate(2015, 7, 16);
Date endByDate = getDate(2015, 12, 31);

MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the Monthly recurrence
MapiCalendarMonthlyRecurrencePattern rec = new MapiCalendarMonthlyRecurrencePattern();
rec.setDay(15);
rec.setPeriod(1);
rec.setPatternType(MapiCalendarRecurrencePatternType.Month);
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=MONTHLY;BYMONTHDAY=15;INTERVAL=1"));
rec.setWeekStartDay(DayOfWeek.Monday);

if (rec.getOccurrenceCount() == 0)
{
    rec.setOccurrenceCount(1);
}

task.setRecurrence(rec);
task.save(dataDir + "Monthly_out.msg", TaskSaveFormat.Msg);

De volgende functie kan worden gebruikt om het aantal evenementen tussen twee data te berekenen:

private static long getOccurrenceCount(Date start, Date endBy, String rrule)
{
    DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
    CalendarRecurrence pattern = new CalendarRecurrence("DTSTART:" + formatter.format(start) + "\r\nRRULE:" + rrule);
    DateCollection dates = pattern.generateOccurrences(start, endBy);
    return dates.size();
}

Vast aantal herhalingen instellen

Het volgende codefragment laat zien hoe je een vast aantal herhalingen instelt.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Monthly recurrence
MapiCalendarMonthlyRecurrencePattern records = new MapiCalendarMonthlyRecurrencePattern();
records.setDay(15);
records.setPeriod(1);
records.setPatternType(MapiCalendarRecurrencePatternType.Month);
records.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
records.setOccurrenceCount(5);
records.setWeekStartDay(DayOfWeek.Monday);

Maandelijkse herhalingen: EndAfterDate‑type

De "End By"‑optie in de Mapi‑taak wordt bereikt door de OccurrenceCount‑eigenschap in te stellen, berekend door de getOccurrenceCount()‑functie. Deze functie neemt een startdatum, einddatum en RRULE‑string. Het volgende codefragment laat zien hoe je een herhaling maakt op de 15e van elke maand tussen start‑ en einddatum.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = getDate(2015, 7, 1);
Date dueDate = getDate(2015, 7, 1);
Date endByDate = getDate(2015, 12, 31);

MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the Monthly recurrence
MapiCalendarMonthlyRecurrencePattern recurrence = new MapiCalendarMonthlyRecurrencePattern();
recurrence.setDay(15);
recurrence.setPeriod(1);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Month);
recurrence.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
recurrence.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=MONTHLY;BYMONTHDAY=15;INTERVAL=1"));
recurrence.setWeekStartDay(DayOfWeek.Monday);
recurrence.setEndDate(endByDate);

task.setRecurrence(recurrence);
task.save(dataDir + "SetMonthlyEndAfterDateRecurrence_out.msg", TaskSaveFormat.Msg);

Maandelijkse herhalingen: NeverEnd‑type

Het volgende codefragment laat zien hoe het eindtype kan worden ingesteld met MapiCalendarRecurrenceEndType.NeverEnd.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiCalendarMonthlyRecurrencePattern recurrence = new MapiCalendarMonthlyRecurrencePattern();
recurrence.setDay(15);
recurrence.setPeriod(1);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Month);
recurrence.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);
recurrence.setWeekStartDay(DayOfWeek.Monday);

Werken met jaarlijkse herhalingen

Aspose.Email ondersteunt het maken van jaarlijkse herhalingen met behulp van MapiCalendarMonthlyRecurrencePattern. Door de period‑eigenschap op 12 te zetten, krijgen we het jaarlijkse herhalingspatroon. Drie verschillende Mapi‑agenda‑herhalings‑eindtypes kunnen worden gebruikt, inclusief EndAfterNOccurrences, EndAfterDate en NeverEnd. Deze sectie toont de creatie van verschillende jaarlijkse herhalingspatronen.

Jaarlijkse herhalingen: EndAfterNOccurrences‑type

Bij dit type herhaling moet het aantal herhalingen samen met andere informatie als volgt worden ingesteld:

  1. Stel start-, eind- en vervaldatum in.
  2. Maak een MapiTask.
  3. Stel de taakstatus in op NotAssigned.
  4. Maak het maandelijkse herhalingsobject aan door de eigenschappen zoals PatternType, Period, WeekStartDay, EndType en OccurenceCount in te stellen.
  5. Stel de MapiTask.setRecurrence‑eigenschap in op dit maandelijkse herhalingsobject om de jaarlijkse herhaling te realiseren.
  6. Sla dit bericht op de schijf op.

Het volgende codefragment laat zien hoe je een taak maakt met het herhalings‑eindtype EndAfterNOccurrence.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
Date startDate = getDate(2015, 7, 1);
Date dueDate = getDate(2015, 7, 1);

MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the Yearly recurrence
MapiCalendarMonthlyRecurrencePattern recurrence = new MapiCalendarMonthlyRecurrencePattern();
recurrence.setDay(15);
recurrence.setPeriod(12);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Month);
recurrence.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
recurrence.setOccurrenceCount(3);

task.setRecurrence(recurrence);
task.save("Yearly.msg", TaskSaveFormat.Msg);

Jaarlijkse herhalingen: EndAfterDate‑type

De "End By"‑optie in de Mapi‑taak wordt bereikt door de OccurrenceCount‑eigenschap in te stellen, berekend door de getOccurrenceCount()‑functie. Deze functie neemt een startdatum, einddatum en RRULE‑string. Het volgende codefragment laat zien hoe je een herhaling maakt op de 15e van elke 7e maand tussen start- en einddatum.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Yearly recurrence
MapiCalendarMonthlyRecurrencePattern rec = new MapiCalendarMonthlyRecurrencePattern();
rec.setDay(15);
rec.setPeriod(12);
rec.setPatternType(MapiCalendarRecurrencePatternType.Month);
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
rec.setEndDate(endByDate);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=7;INTERVAL=1"));

Jaarlijkse herhalingen: NeverEnd‑type

Het volgende codefragment laat zien hoe het eindtype kan worden ingesteld met MapiCalendarRecurrenceEndType.NeverEnd.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Yearly recurrence
MapiCalendarMonthlyRecurrencePattern recurrence = new MapiCalendarMonthlyRecurrencePattern();
recurrence.setDay(15);
recurrence.setPeriod(12);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Month);
recurrence.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);

Herhaling genereren uit een herhalingsregel

Aspose.Email‑API biedt de mogelijkheid om een herhalingspatroon te genereren uit een herhalingsregel (RRULE). Het parseert de informatie uit de RRULE volgens de RFC 5545 iCal‑specificaties en genereert het herhalingspatroon met de MapiCalendarRecurrencePatternFactory.fromString‑methode. Het volgende codefragment laat zien hoe je een herhalingspatroon genereert uit de herhalingsregel.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

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

app1.setStartDate(startDate);
app1.setEndDate(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.getRecurrence().setRecurrencePattern(MapiCalendarRecurrencePatternFactory.fromString(pattern));

Bijlage toevoegen aan terugkerende agenda‑evenementen

Aspose.Email‑API biedt de mogelijkheid om bijlagen toe te voegen aan terugkerende agenda‑evenementen.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = addHours(getDate(2018, 7, 19), 12);
MapiCalendar calendar = new MapiCalendar("location1", "summary1", "description1", startDate, addHours(startDate, 1));

MapiCalendarEventRecurrence recurrence = new MapiCalendarEventRecurrence();
MapiCalendarRecurrencePattern pattern = new MapiCalendarDailyRecurrencePattern();
recurrence.setRecurrencePattern(pattern);
pattern.setPatternType(MapiCalendarRecurrencePatternType.Day);
pattern.setPeriod(1);
pattern.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);

Date exceptionDate = addDays(startDate, 3);
MapiCalendarExceptionInfo exception = new MapiCalendarExceptionInfo();
exception.setLocation("exceptionLoc");
exception.setSubject("exceptionSubj");
exception.setBody("exceptionBody");
exception.setOriginalStartDate(exceptionDate);
exception.setStartDateTime(exceptionDate);
exception.setEndDateTime(addHours(exceptionDate, 5));
exception.setAttachments(new MapiAttachmentCollection(calendar));
exception.getAttachments().add("file.txt", "hello, world!".getBytes());

pattern.getExceptions().addItem(exception);
pattern.getModifiedInstanceDates().addItem(exceptionDate);
pattern.getDeletedInstanceDates().addItem(exceptionDate);
calendar.setRecurrence(recurrence);

try (PersonalStorage newPst = PersonalStorage.create(dataDir + "AddAttachmentToMapiExceptionInfo.pst", FileFormatVersion.Unicode))
{
    FolderInfo newFolder = newPst.createPredefinedFolder("Calendar", StandardIpmFolder.Appointments);
    newFolder.addMapiMessageItem(calendar);
}

Agenda‑evenementtijdzone instellen

Aspose.Email‑API biedt de mogelijkheid om de tijdzone van de agenda in te stellen:

  • tijdzone‑informatie voor start-/einddatum
  • tijdzone‑informatie voor een terugkerende vergadering
  • tijdzone‑informatie die beschrijft hoe de vergaderdatum en -tijd in een terugkerende serie naar UTC en terug te converteren

Het volgende codefragment laat zien hoe je tijdzone‑informatie voor de agenda instelt:

MapiCalendar event = new MapiCalendar("location", "summary", "description", startDate, endDate);
// UTC time zone
MapiCalendarTimeZone utcTimeZone = new MapiCalendarTimeZone("UTC");
event.setStartDateTimeZone(utcTimeZone);
event.setEndDateTimeZone(utcTimeZone);

MapiCalendarDailyRecurrencePattern pattern = new MapiCalendarDailyRecurrencePattern();
pattern.setPeriod(1);
pattern.setStartDate(startDate);
pattern.setEndDate(untilDate);
pattern.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
pattern.setPatternType(MapiCalendarRecurrencePatternType.Day);
pattern.setDayOfWeek(DayOfWeek.Monday);

MapiCalendarEventRecurrence r = new MapiCalendarEventRecurrence();
r.setRecurrencePattern(pattern);
r.setClipStart(startDate);
r.setClipEnd(pattern.getEndDate());
//https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/pidlidappointmenttimezonedefinitionrecur-canonical-property
r.setAppointmentTimeZoneDefinitionRecur(utcTimeZone); // <---
r.setTimeZoneStruct(utcTimeZone); // <---
event.setRecurrence(r);