Lavorare con le ricorrenze
Lavorare con ricorrenze giornaliere
Aspose.Email supporta la creazione di ricorrenze giornaliere usando MapiCalendarDailyRecurrencePattern. Tre diversi tipi di fine ricorrenza del calendario Mapi possono essere usati includendo EndAfterNOccurrences, EndAfterDate e NeverEnd. Questa sezione dimostra la creazione di diversi modelli di ricorrenza giornaliera.
Ricorrenze giornaliere: Tipo di ricorrenza EndAfterNOccurrence
In questo tipo di ricorrenza, il numero di ricorrenze deve essere impostato insieme alle altre informazioni come segue:
- Imposta data di inizio, fine e scadenza.
- Crea un MapiTask.
- Imposta lo stato dell’attività a NotAssigned.
- Crea l’oggetto di ricorrenza giornaliera impostando le proprietà come PatternType, Period, WeekStartDay, EndType e OccurenceCount.
- Imposta la proprietà MapiTask.setRecurrence su questo oggetto di ricorrenza giornaliera.
- Salva questo messaggio su disco.
Il seguente frammento di codice mostra come creare un’attività con tipo di fine ricorrenza 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);
La seguente funzione può essere usata per calcolare il numero di eventi tra le due date:
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();
}
Impostare il valore del conteggio delle occorrenze
Il seguente frammento di codice mostra come impostare il valore del conteggio delle occorrenze.
// 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);
Ricorrenze giornaliere: Tipo di ricorrenza EndAfterDate
"End By" opzione nel Mapi Task è ottenuta impostando la proprietà OccurrenceCount calcolata dalla funzione getOccurrenceCount(). Questa funzione prende data di inizio, data di fine e stringa RRULE.
Ricorrenze giornaliere: Impostare il valore Every Day
Il seguente frammento di codice mostra come impostare il valore period a 1 e il valore INTERVAL a 1 nella stringa RRULE.
// 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);
Il valore Every Day può essere impostato a qualsiasi valore appropriato come mostrato nell’esempio seguente:
// 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"));
Ricorrenze giornaliere: Tipo di ricorrenza NeverEnd
Il tipo di fine può essere impostato usando MapiCalendarRecurrenceEndType.NeverEnd. Periodo o INTERVAL possono essere impostati al valore richiesto, ad esempio 1, nell’esempio seguente.
// 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);
Lavorare con ricorrenze settimanali
Aspose.Email fornisce funzionalità avanzate per la creazione di ricorrenze settimanali usando MapiCalendarWeeklyRecurrencePattern. Tre diversi tipi di fine ricorrenza del calendario Mapi possono essere usati includendo EndAfterNOccurrences, EndAfterDate e NeverEnd. Questa sezione dimostra la creazione di diversi modelli di ricorrenza settimanale.
Ricorrenze settimanali: Tipo di ricorrenza EndAfterNOccurrences
In questo tipo di ricorrenza, il numero di ricorrenze deve essere impostato insieme alle altre informazioni come segue:
- Imposta data di inizio, fine e scadenza.
- Crea un MapiTask.
- Imposta lo stato dell’attività a NotAssigned.
- Crea l’oggetto di ricorrenza settimanale impostando le proprietà come PatternType, Period, WeekStartDay, EndType e OccurenceCount.
- Imposta la proprietà MapiTask.setRecurrence su questo oggetto di ricorrenza settimanale.
- Salva questo messaggio su disco.
Il seguente frammento di codice mostra come creare un’attività con tipo di fine ricorrenza 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);
La seguente funzione può essere usata per calcolare il numero di eventi tra le due date:
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();
}
Selezionare più giorni in una settimana
Il seguente frammento di codice mostra come selezionare più giorni in una settimana.
// 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"));
Selezionare più giorni in una settimana e impostare gli intervalli
Il seguente frammento di codice mostra come selezionare più giorni in una settimana e impostare gli intervalli.
// 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"));
Ricorrenze settimanali: Tipo di ricorrenza EndAfterDate
"End By" opzione nel Mapi Task è ottenuta impostando la proprietà OccurrenceCount calcolata dalla funzione getOccurrenceCount(). Questa funzione prende data di inizio, data di fine e stringa RRULE.
Ricorrenze settimanali: Impostare il valore Every Day
Il seguente frammento di codice mostra come impostare il valore period a 1 e il valore INTERVAL a 1 nella stringa RRULE.
// 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"));
Il valore Every Day può essere impostato a qualsiasi valore appropriato e più giorni possono essere selezionati come mostrato nell’esempio seguente:
// 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"));
Ricorrenze settimanali: Tipo di ricorrenza NeverEnd
Il tipo di fine può essere impostato usando MapiCalendarRecurrenceEndType.NeverEnd. Periodo o INTERVAL possono essere impostati al valore richiesto, ad esempio 1, nell’esempio seguente.
// 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"));
Lavorare con ricorrenze mensili
Aspose.Email supporta la creazione di ricorrenze mensili usando MapiCalendarMonthlyRecurrencePattern. Tre diversi tipi di fine ricorrenza del calendario Mapi possono essere usati includendo EndAfterNOccurrences, EndAfterDate e NeverEnd. Questa sezione dimostra la creazione di diversi modelli di ricorrenza mensile.
Ricorrenze mensili: Tipo di ricorrenza EndAfterNOccurrences
In questo tipo di ricorrenza, il numero di ricorrenze deve essere impostato insieme alle altre informazioni come segue:
- Imposta data di inizio, fine e scadenza.
- Crea un MapiTask.
- Imposta lo stato dell’attività a NotAssigned.
- Crea l’oggetto di ricorrenza mensile impostando le proprietà come PatternType, Period, WeekStartDay, EndType e OccurenceCount.
- Imposta la proprietà MapiTask.setRecurrence su questo oggetto di ricorrenza mensile.
- Salva questo messaggio su disco.
Il seguente frammento di codice mostra come creare un’attività con tipo di fine ricorrenza 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);
La seguente funzione può essere usata per calcolare il numero di eventi tra due date:
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();
}
Impostare numero fisso di occorrenze
Il seguente frammento di codice mostra come impostare un numero fisso di occorrenze.
// 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);
Ricorrenze mensili: Tipo di ricorrenza EndAfterDate
"End By" opzione nel Mapi Task è ottenuta impostando la proprietà OccurrenceCount calcolata dalla funzione getOccurrenceCount(). Questa funzione prende data di inizio, data di fine e stringa RRULE. Il seguente frammento di codice mostra come creare una ricorrenza il 15° di ogni mese tra data di inizio e fine.
// 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);
Ricorrenze mensili: Tipo di ricorrenza NeverEnd
Il seguente frammento di codice mostra come il tipo di fine può essere impostato usando 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);
Lavorare con ricorrenze annuali
Aspose.Email supporta la creazione di ricorrenze annuali usando MapiCalendarMonthlyRecurrencePattern. Impostando la proprietà period a 12, possiamo ottenere il modello di ricorrenza annuale. Tre diversi tipi di fine ricorrenza del calendario Mapi possono essere usati includendo EndAfterNOccurrences, EndAfterDate e NeverEnd. Questa sezione dimostra la creazione di diversi modelli di ricorrenza annuale.
Ricorrenze annuali: Tipo di ricorrenza EndAfterNOccurrences
In questo tipo di ricorrenza, il numero di ricorrenze deve essere impostato insieme alle altre informazioni come segue:
- Imposta data di inizio, fine e scadenza.
- Crea un MapiTask.
- Imposta lo stato dell’attività a NotAssigned.
- Crea l’oggetto di ricorrenza mensile impostando le proprietà come PatternType, Period, WeekStartDay, EndType e OccurenceCount.
- Imposta la proprietà MapiTask.setRecurrence su questo oggetto di ricorrenza mensile per ottenere la ricorrenza annuale.
- Salva questo messaggio su disco.
Il seguente frammento di codice mostra come creare un’attività con tipo di fine ricorrenza 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);
Ricorrenze annuali: Tipo di ricorrenza EndAfterDate
"End By" opzione nel Mapi Task è ottenuta impostando la proprietà OccurrenceCount calcolata dalla funzione getOccurrenceCount(). Questa funzione prende la data di inizio, la data di fine e la stringa RRULE. Il seguente frammento di codice mostra come creare una ricorrenza il 15° di ogni 7° mese tra data di inizio e fine.
// 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"));
Ricorrenze annuali: Tipo di ricorrenza NeverEnd
Il seguente frammento di codice mostra come il tipo di fine può essere impostato usando 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);
Generare ricorrenza da regola di ricorrenza
L’API Aspose.Email fornisce la possibilità di generare un modello di ricorrenza da una Regola di Ricorrenza (RRULE). Analizza le informazioni dal RRULE secondo le specifiche iCal RFC 5545 e genera il modello di ricorrenza usando il metodo MapiCalendarRecurrencePatternFactory.fromString. Il seguente frammento di codice mostra come generare il modello di ricorrenza dalla regola.
// 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));
Aggiungere allegato a eventi di calendario ricorrenti
L’API Aspose.Email fornisce la possibilità di aggiungere allegati a eventi di calendario ricorrenti.
// 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);
}
Impostare il fuso orario dell’evento del calendario
L’API Aspose.Email fornisce la possibilità di impostare il fuso orario del calendario:
- informazioni sul fuso orario per data di inizio/fine
- informazioni sul fuso orario per una riunione ricorrente
- informazioni sul fuso orario che descrivono come convertire la data e l’ora della riunione in una serie ricorrente da e verso UTC
Il seguente frammento di codice mostra come impostare le informazioni del fuso orario del calendario:
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);