Travailler avec les récurrences

Contents
[ ]

Travailler avec les listes de distribution

Travailler avec les récurrences quotidiennes Aspose.Email prend en charge la création de récurrences quotidiennes à l’aide deMapiCalendarDailyRecurrencePattern

. Trois différents types de fin de récurrence de calendrier Mapi peuvent être utilisés, notamment EndAfterNOccurrences, EndAfterDate et NeverEnd. Cette section montre la création de différents modèles de récurrence quotidien.

Récurrences hebdomadaires : type EndAfterNOccurrences

  1. Dans ce type de récurrence, le nombre de récurrences doit être défini avec d’autres informations comme suit :
  2. Créez un MapiTask.
  3. Définissez la date de début, de fin et d’échéance.
  4. Récurrences quotidiennes : type EndAfterNOccurrence
  5. Créez l’objet de récurrence quotidienne en définissant les propriétés comme PatternType, Period, WeekStartDay, EndType et OccurenceCount.
  6. Définissez la propriété MapiTask.setRecurrence sur cet objet de récurrence mensuelle pour obtenir la récurrence annuelle.

Enregistrez ce message sur le disque.

// 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);

Définissez la propriété MapiTask.setRecurrence sur cet objet de récurrence quotidienne.

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();
}

La fonction suivante peut être utilisée pour calculer le nombre d’événements entre les deux dates :

Définir la valeur du nombre d’occurrences

// 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);

Le fragment de code suivant montre comment définir la valeur du nombre d’occurrences.

Récurrences quotidiennes : type EndAfterDate

"End By" option in the Mapi Task is achieved by setting the OccurrenceCount property calculated by the getOccurrenceCount() function. This function takes start date , end date and RRULE string.

Récurrences hebdomadaires : définir la valeur Every Day

// 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);

Récurrences quotidiennes : définir la valeur Every Day

// 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"));

La valeur Every Day peut être définie à n’importe quelle valeur appropriée comme indiqué dans l’exemple suivant :

Récurrences hebdomadaires : type NeverEnd

// 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);

Récurrences quotidiennes : type NeverEnd

Travailler avec les récurrences hebdomadaires Aspose.Email offre des fonctionnalités riches pour la création de récurrences hebdomadaires à l’aide deMapiCalendarWeeklyRecurrencePattern

. Trois différents types de fin de récurrence de calendrier Mapi peuvent être utilisés, notamment EndAfterNOccurrences, EndAfterDate et NeverEnd. Cette section montre la création de différents modèles de récurrence hebdomadaires.

Récurrences hebdomadaires : type EndAfterNOccurrences

  1. Dans ce type de récurrence, le nombre de récurrences doit être défini avec d’autres informations comme suit :
  2. Créez un MapiTask.
  3. Définissez la date de début, de fin et d’échéance.
  4. Dans ce type de récurrence, le nombre de récurrences doit être défini avec d’autres informations comme suit :
  5. Créez l’objet de récurrence hebdomadaire en définissant les propriétés comme PatternType, Period, WeekStartDay, EndType et OccurenceCount.
  6. Définissez la propriété MapiTask.setRecurrence sur cet objet de récurrence mensuelle pour obtenir la récurrence annuelle.

Enregistrez ce message sur le disque.

// 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);

Définissez la propriété MapiTask.setRecurrence sur cet objet de récurrence hebdomadaire.

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();
}

La fonction suivante peut être utilisée pour calculer le nombre d’événements entre les deux dates :

Sélectionner plusieurs jours dans une semaine

// 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"));

Le fragment de code suivant montre comment sélectionner plusieurs jours dans une semaine.

Sélectionner plusieurs jours dans une semaine et définir les intervalles

// 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"));

Le fragment de code suivant montre comment sélectionner plusieurs jours dans une semaine et définir des intervalles.

Récurrences hebdomadaires : type EndAfterDate

"End By" option in the Mapi Task is achieved by setting the OccurrenceCount property calculated by the getOccurrenceCount() function. This function takes start date, end date and RRULE string.

Récurrences hebdomadaires : définir la valeur Every Day

// 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"));

Le fragment de code suivant montre comment régler la valeur period à 1 et la valeur INTERVAL à 1 dans la chaîne RRULE également.

// 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"));

La valeur Every Day peut être définie à n’importe quelle valeur appropriée et plusieurs jours peuvent être sélectionnés comme indiqué dans l’exemple suivant :

Récurrences hebdomadaires : type NeverEnd

// 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"));

Le type de fin peut être défini en utilisant MapiCalendarRecurrenceEndType.NeverEnd. La période ou INTERVAL peut être définie à la valeur requise, par exemple 1, dans l’exemple suivant.

Travailler avec les récurrences mensuelles Aspose.Email prend en charge la création de récurrences annuelles à l’aide deAspose.Email supporte la création de récurrences mensuelles à l’aide de

. Trois différents types de fin de récurrence de calendrier Mapi peuvent être utilisés, notamment EndAfterNOccurrences, EndAfterDate et NeverEnd. Cette section montre la création de différents modèles de récurrence mensuels.

Récurrences annuelles : type EndAfterNOccurrences

  1. Dans ce type de récurrence, le nombre de récurrences doit être défini avec d’autres informations comme suit :
  2. Créez un MapiTask.
  3. Définissez la date de début, de fin et d’échéance.
  4. Définissez l’état de la tâche à NotAssigned.
  5. Récurrences mensuelles : type EndAfterNOccurrences
  6. Définissez la propriété MapiTask.setRecurrence sur cet objet de récurrence mensuelle pour obtenir la récurrence annuelle.

Enregistrez ce message sur le disque.

// 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);

Définissez la propriété MapiTask.setRecurrence sur cet objet de récurrence mensuelle.

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();
}

La fonction suivante peut être utilisée pour calculer le nombre d’événements entre deux dates :

Définir un nombre fixe d’occurrences

// 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);

Le fragment de code suivant montre comment définir un nombre fixe d’occurrences.

Récurrences mensuelles : type EndAfterDate

// 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);

"End By" option in the Mapi Task is achieved by setting the OccurrenceCount property calculated by the getOccurrenceCount() function. This function takes start date, end date and RRULE string. The following code snippet shows you how to create a recurrence on the 15th of each month between start and end by date.

Récurrences annuelles : type 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);

Récurrences mensuelles : type NeverEnd

Travailler avec les récurrences annuelles Aspose.Email prend en charge la création de récurrences annuelles à l’aide deMapiCalendarMonthlyRecurrencePattern

. En définissant la propriété period à 12, nous pouvons obtenir le modèle de récurrence annuelle. Trois types de fin de récurrence de calendrier Mapi peuvent être utilisés, notamment EndAfterNOccurrences, EndAfterDate et NeverEnd. Cette section illustre la création de différents modèles de récurrence annuels.

Récurrences annuelles : type EndAfterNOccurrences

  1. Dans ce type de récurrence, le nombre de récurrences doit être défini avec d’autres informations comme suit :
  2. Créez un MapiTask.
  3. Définissez la date de début, de fin et d’échéance.
  4. Définissez l’état de la tâche à NotAssigned.
  5. Créez l’objet de récurrence mensuelle en définissant les propriétés comme PatternType, Period, WeekStartDay, EndType et OccurenceCount.
  6. Définissez la propriété MapiTask.setRecurrence sur cet objet de récurrence mensuelle pour obtenir la récurrence annuelle.

Enregistrez ce message sur le disque.

// 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);

Le fragment de code suivant montre comment créer une tâche dont le type de fin de récurrence est EndAfterNOccurrence.

Récurrences annuelles : type EndAfterDate

// 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"));

"End By" option in the Mapi Task is achieved by setting the OccurrenceCount property calculated by the getOccurrenceCount() function. This function takes start date, end date and RRULE string. The following code snippet shows you how to create a recurrence on the 15th of each 7th month between start and end by date.

Récurrences annuelles : type 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);

Le fragment de code suivant montre comment le type de fin peut être défini en utilisant MapiCalendarRecurrenceEndType.NeverEnd.

Générer une récurrence à partir d’une règle de récurrence

// 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));

L’API Aspose.Email offre la capacité de générer un modèle de récurrence à partir d’une règle de récurrence (RRULE). Elle analyse les informations du RRULE conformément aux spécifications iCal RFC 5545 et génère le modèle de récurrence à l’aide de la méthode MapiCalendarRecurrencePatternFactory.fromString. Le fragment de code suivant montre comment générer un modèle de récurrence à partir de la règle de récurrence.

Ajouter une pièce jointe aux événements de calendrier récurrents

// 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);
}

Définir le fuseau horaire d’un événement de calendrier

L’API Aspose.Email offre la capacité d’ajouter des pièces jointes aux événements de calendrier récurrents.

  • informations de fuseau horaire pour la date de début/fin
  • informations de fuseau horaire pour une réunion récurrente
  • informations de fuseau horaire décrivant comment convertir la date et l’heure de la réunion d’une série récurrente vers et depuis UTC

Le fragment de code suivant montre comment définir les informations de fuseau horaire du calendrier :

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);