Práce s opakováním
Práce s denními opakováními
Aspose.Email podporuje vytváření denních opakování pomocí MapiCalendarDailyRecurrencePattern. Lze použít tři různé typy konce opakování kalendáře Mapi, včetně EndAfterNOccurrences, EndAfterDate a NeverEnd. Tato sekce ukazuje vytvoření různých denních vzorů opakování.
Denní opakování: Typ EndAfterNOccurrence
V tomto typu opakování se má nastavit počet opakování spolu s dalšími informacemi následovně:
- Nastavte datum začátku, konce a termínu.
- Vytvořte MapiTask.
- Nastavte stav úkolu na NotAssigned.
- Vytvořte denní objekt opakování nastavením vlastností jako PatternType, Period, WeekStartDay, EndType a OccurenceCount.
- Nastavte vlastnost MapiTask.setRecurrence na tento denní objekt opakování.
- Uložte tuto zprávu na disk.
Následující úryvek kódu ukazuje, jak vytvořit úkol s typem konce opakování 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);
Následující funkci lze použít k výpočtu počtu událostí mezi dvěma daty:
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();
}
Nastavení hodnoty počtu výskytů
Následující úryvek kódu ukazuje, jak nastavit hodnotu počtu výskytů.
// 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);
Denní opakování: Typ EndAfterDate
"End By" možnost v úkolu Mapi se dosahuje nastavením vlastnosti OccurrenceCount, která je vypočítána funkcí getOccurrenceCount(). Tato funkce přijímá počáteční datum, koncové datum a řetězec RRULE.
Denní opakování: Nastavení hodnoty Every Day
Následující úryvek kódu ukazuje, jak nastavit hodnotu period na 1 a hodnotu INTERVAL na 1 také v řetězci 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);
Hodnotu Every Day lze nastavit na libovolnou vhodnou hodnotu, jak je ukázáno v následujícím příkladu:
// 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"));
Denní opakování: Typ NeverEnd
Typ konce lze nastavit pomocí MapiCalendarRecurrenceEndType.NeverEnd. Periodu nebo INTERVAL lze nastavit na požadovanou hodnotu, například 1, v následujícím příkladu.
// 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);
Práce s týdenními opakováními
Aspose.Email poskytuje bohaté funkce pro vytváření týdenních opakování pomocí MapiCalendarWeeklyRecurrencePattern. Lze použít tři různé typy konce opakování kalendáře Mapi, včetně EndAfterNOccurrences, EndAfterDate a NeverEnd. Tato sekce ukazuje vytvoření různých týdenních vzorů opakování.
Týdenní opakování: Typ EndAfterNOccurrences
V tomto typu opakování se má nastavit počet opakování spolu s dalšími informacemi následovně:
- Nastavte datum začátku, konce a termínu.
- Vytvořte MapiTask.
- Nastavte stav úkolu na NotAssigned.
- Vytvořte týdenní objekt opakování nastavením vlastností jako PatternType, Period, WeekStartDay, EndType a OccurenceCount.
- Nastavte vlastnost MapiTask.setRecurrence na tento týdenní objekt opakování.
- Uložte tuto zprávu na disk.
Následující úryvek kódu ukazuje, jak vytvořit úkol s typem konce opakování 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);
Následující funkci lze použít k výpočtu počtu událostí mezi dvěma daty:
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();
}
Výběr více dnů v týdnu
Následující úryvek kódu ukazuje, jak vybrat více dnů v týdnu.
// 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"));
Výběr více dnů v týdnu a nastavení intervalů
Následující úryvek kódu ukazuje, jak vybrat více dnů v týdnu a nastavit intervaly.
// 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"));
Týdenní opakování: Typ EndAfterDate
"End By" možnost v úkolu Mapi se dosahuje nastavením vlastnosti OccurrenceCount, která je vypočítána funkcí getOccurrenceCount(). Tato funkce přijímá počáteční datum, koncové datum a řetězec RRULE.
Týdenní opakování: Nastavení hodnoty Every Day
Následující úryvek kódu ukazuje, jak nastavit hodnotu period na 1 a hodnotu INTERVAL na 1 také v řetězci 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"));
Hodnotu Every Day lze nastavit na libovolnou vhodnou hodnotu a lze vybrat více dnů, jak je ukázáno v následujícím příkladu:
// 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"));
Týdenní opakování: Typ NeverEnd
Typ konce lze nastavit pomocí MapiCalendarRecurrenceEndType.NeverEnd. Periodu nebo INTERVAL lze nastavit na požadovanou hodnotu, například 1, v následujícím příkladu.
// 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"));
Práce s měsíčními opakováními
Aspose.Email podporuje vytváření měsíčních opakování pomocí MapiCalendarMonthlyRecurrencePattern. Lze použít tři různé typy konce opakování kalendáře Mapi, včetně EndAfterNOccurrences, EndAfterDate a NeverEnd. Tato sekce ukazuje vytvoření různých měsíčních vzorů opakování.
Měsíční opakování: Typ EndAfterNOccurrences
V tomto typu opakování se má nastavit počet opakování spolu s dalšími informacemi následovně:
- Nastavte datum začátku, konce a termínu.
- Vytvořte MapiTask.
- Nastavte stav úkolu na NotAssigned.
- Vytvořte měsíční objekt opakování nastavením vlastností jako PatternType, Period, WeekStartDay, EndType a OccurenceCount.
- Nastavte vlastnost MapiTask.setRecurrence na tento měsíční objekt opakování.
- Uložte tuto zprávu na disk.
Následující úryvek kódu ukazuje, jak vytvořit úkol s typem konce opakování 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);
Následující funkci lze použít k výpočtu počtu událostí mezi dvěma daty:
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();
}
Nastavit pevný počet opakování
Následující úryvek kódu ukazuje, jak nastavit pevný počet opakování.
// 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);
Měsíční opakování: Typ EndAfterDate
"End By" možnost v úkolu Mapi se dosahuje nastavením vlastnosti OccurrenceCount, která je vypočítána funkcí getOccurrenceCount(). Tato funkce přijímá počáteční datum, koncové datum a řetězec RRULE. Následující úryvek kódu ukazuje, jak vytvořit opakování 15. dne každého měsíce mezi počátkem a koncem podle data.
// 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);
Měsíční opakování: Typ NeverEnd
Následující úryvek kódu ukazuje, jak lze nastavit typ konce pomocí 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);
Práce s ročními opakováními
Aspose.Email podporuje vytváření ročních opakování pomocí MapiCalendarMonthlyRecurrencePattern. Nastavením vlastnosti period na 12 lze dosáhnout ročního vzoru opakování. Lze použít tři různé typy konce opakování kalendáře Mapi, včetně EndAfterNOccurrences, EndAfterDate a NeverEnd. Tato sekce ukazuje vytvoření různých ročních vzorů opakování.
Roční opakování: Typ EndAfterNOccurrences
V tomto typu opakování se má nastavit počet opakování spolu s dalšími informacemi následovně:
- Nastavte datum začátku, konce a termínu.
- Vytvořte MapiTask.
- Nastavte stav úkolu na NotAssigned.
- Vytvořte měsíční objekt opakování nastavením vlastností jako PatternType, Period, WeekStartDay, EndType a OccurenceCount.
- Nastavte vlastnost MapiTask.setRecurrence na tento měsíční objekt opakování, abyste dosáhli ročního opakování.
- Uložte tuto zprávu na disk.
Následující úryvek kódu ukazuje, jak vytvořit úkol s typem konce opakování 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);
Roční opakování: Typ EndAfterDate
"End By" možnost v úkolu Mapi se dosahuje nastavením vlastnosti OccurrenceCount, která je vypočítána funkcí getOccurrenceCount(). Tato funkce přijímá počáteční datum, koncové datum a řetězec RRULE. Následující úryvek kódu ukazuje, jak vytvořit opakování 15. dne každého 7. měsíce mezi počátkem a koncem podle data.
// 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"));
Roční opakování: Typ NeverEnd
Následující úryvek kódu ukazuje, jak lze nastavit typ konce pomocí 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);
Generovat opakování z pravidla opakování
Aspose.Email API poskytuje možnost generovat vzor opakování z pravidla opakování (RRULE). Analyzuje informace z RRULE podle specifikací RFC 5545 iCal a generuje vzor opakování pomocí metody MapiCalendarRecurrencePatternFactory.fromString. Následující úryvek kódu ukazuje, jak vygenerovat vzor opakování z pravidla opakování.
// 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));
Přidat přílohu k opakujícím se událostem kalendáře
Aspose.Email API poskytuje možnost přidávat přílohy k opakujícím se událostem kalendáře.
// 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);
}
Nastavit časové pásmo události kalendáře
Aspose.Email API poskytuje možnost nastavit časové pásmo kalendáře:
- informace o časovém pásmu pro datum začátku/konce
- informace o časovém pásmu pro opakující se schůzku
- informace o časovém pásmu, které popisují, jak převést datum a čas schůzky v opakující se sérii z a do UTC
Následující úryvek kódu ukazuje, jak nastavit informace o časovém pásmu kalendáře:
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);