Робота з повтореннями
Робота з щоденними повтореннями
Aspose.Email підтримує створення щоденних повторень за допомогою MapiCalendarDailyRecurrencePattern. Можна використовувати три різних типи завершення повторення календаря Mapi, включаючи EndAfterNOccurrences, EndAfterDate та NeverEnd. У цьому розділі демонструється створення різних шаблонів щоденного повторення.
Щоденні повторення: тип EndAfterNOccurrence
У цьому типі повторення кількість повторень слід встановити разом з іншою інформацією наступним чином:
- Встановіть дату початку, завершення та виконання.
- Створіть MapiTask.
- Встановіть стан завдання як NotAssigned.
- Створіть об’єкт щоденного повторення, встановивши властивості, такі як PatternType, Period, WeekStartDay, EndType та OccurenceCount.
- Встановіть властивість MapiTask.setRecurrence у цей об’єкт щоденного повторення.
- Збережіть це повідомлення на диск.
Наведений фрагмент коду показує, як створити завдання з типом завершення повторення 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);
Наступну функцію можна використати для обчислення кількості подій між двома датами:
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();
}
Встановлення значення кількості повторень
Наведений фрагмент коду показує, як встановити значення кількості повторень.
// 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);
Щоденні повторення: тип EndAfterDate
"Опція "End By" у Mapi Task досягається встановленням властивості OccurrenceCount, обчисленої функцією getOccurrenceCount(). Ця функція приймає дату початку, дату завершення та рядок RRULE.
Щоденні повторення: встановлення значення Every Day
Наведений фрагмент коду показує, як встановити значення period у 1 та значення INTERVAL у 1 у рядку 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);
Значення 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"));
Щоденні повторення: тип NeverEnd
Тип завершення можна встановити, використовуючи MapiCalendarRecurrenceEndType.NeverEnd. Параметр Period або INTERVAL можна встановити в потрібне значення, наприклад 1, у наведеному прикладі.
// 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);
Робота з щотижневими повтореннями
Aspose.Email надає широкий спектр можливостей для створення щотижневих повторень за допомогою MapiCalendarWeeklyRecurrencePattern. Можна використовувати три різних типи завершення повторення календаря Mapi, включаючи EndAfterNOccurrences, EndAfterDate та NeverEnd. У цьому розділі демонструється створення різних шаблонів щотижневого повторення.
Щотижневі повторення: тип EndAfterNOccurrences
У цьому типі повторення кількість повторень слід встановити разом з іншою інформацією наступним чином:
- Встановіть дату початку, завершення та виконання.
- Створіть MapiTask.
- Встановіть стан завдання як NotAssigned.
- Створіть об’єкт щотижневого повторення, встановивши властивості, такі як PatternType, Period, WeekStartDay, EndType та OccurenceCount.
- Встановіть властивість MapiTask.setRecurrence у цей об’єкт щотижневого повторення.
- Збережіть це повідомлення на диск.
Наведений фрагмент коду показує, як створити завдання з типом завершення повторення 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);
Наступну функцію можна використати для обчислення кількості подій між двома датами:
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();
}
Вибір кількох днів у тижні
Наведений фрагмент коду показує, як вибрати кілька днів у тижні.
// 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"));
Вибір кількох днів у тижні та встановлення інтервалів
Наведений фрагмент коду показує, як вибрати кілька днів тижня та встановити інтервали.
// 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"));
Щотижневі повторення: тип EndAfterDate
"Опція "End By" у Mapi Task досягається встановленням властивості OccurrenceCount, обчисленої функцією getOccurrenceCount(). Ця функція приймає дату початку, дату завершення та рядок RRULE.
Щотижневі повторення: встановлення значення Every Day
Наведений фрагмент коду показує, як встановити значення period у 1 та значення INTERVAL у 1 у рядку 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"));
Значення Every Day можна встановити у будь‑яке підходяще значення, а кілька днів можна вибрати, як показано у наведеному прикладі:
// 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"));
Щотижневі повторення: тип NeverEnd
Тип завершення можна встановити, використовуючи MapiCalendarRecurrenceEndType.NeverEnd. Параметр Period або INTERVAL можна встановити в потрібне значення, наприклад 1, у наведеному прикладі.
// 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"));
Робота з місячними повтореннями
Aspose.Email підтримує створення місячних повторень за допомогою MapiCalendarMonthlyRecurrencePattern. Можна використовувати три різних типи завершення повторення календаря Mapi, включаючи EndAfterNOccurrences, EndAfterDate та NeverEnd. У цьому розділі демонструється створення різних шаблонів місячного повторення.
Місячні повторення: тип EndAfterNOccurrences
У цьому типі повторення кількість повторень слід встановити разом з іншою інформацією наступним чином:
- Встановіть дату початку, завершення та виконання.
- Створіть MapiTask.
- Встановіть стан завдання як NotAssigned.
- Створіть об’єкт щомісячного повторення, встановивши властивості, такі як PatternType, Period, WeekStartDay, EndType та OccurenceCount.
- Встановіть властивість MapiTask.setRecurrence у цей об’єкт щомісячного повторення.
- Збережіть це повідомлення на диск.
Наведений фрагмент коду показує, як створити завдання з типом завершення повторення 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);
Наступну функцію можна використати для обчислення кількості подій між двома датами:
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();
}
Встановити фіксовану кількість повторень
Наведений фрагмент коду показує, як встановити фіксовану кількість повторень.
// 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);
Місячні повторення: тип EndAfterDate
"Опція "End By" у Mapi Task досягається встановленням властивості OccurrenceCount, обчисленої функцією getOccurrenceCount(). Ця функція приймає дату початку, дату завершення та рядок RRULE. Наведений фрагмент коду показує, як створити повторення 15‑го числа кожного місяця між датами початку та завершення.
// 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);
Місячні повторення: тип NeverEnd
Наведений фрагмент коду показує, як можна встановити тип завершення, використовуючи 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);
Робота з щорічними повтореннями
Aspose.Email підтримує створення щорічних повторень за допомогою MapiCalendarMonthlyRecurrencePattern. Встановивши властивість period у значення 12, ми можемо отримати щорічний шаблон повторення. Можна використовувати три різних типи завершення повторення календаря Mapi, включаючи EndAfterNOccurrences, EndAfterDate та NeverEnd. У цьому розділі демонструється створення різних щорічних шаблонів повторення.
Щорічні повторення: тип EndAfterNOccurrences
У цьому типі повторення кількість повторень слід встановити разом з іншою інформацією наступним чином:
- Встановіть дату початку, завершення та виконання.
- Створіть MapiTask.
- Встановіть стан завдання як NotAssigned.
- Створіть об’єкт щомісячного повторення, встановивши властивості, такі як PatternType, Period, WeekStartDay, EndType та OccurenceCount.
- Встановіть властивість MapiTask.setRecurrence у цей об’єкт щомісячного повторення, щоб отримати щорічне повторення.
- Збережіть це повідомлення на диск.
Наведений фрагмент коду показує, як створити завдання з типом завершення повторення 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);
Щорічні повторення: тип EndAfterDate
"Опція "End By" у Mapi Task досягається встановленням властивості OccurrenceCount, обчисленої функцією getOccurrenceCount(). Ця функція приймає дату початку, дату завершення та рядок RRULE. Наведений фрагмент коду показує, як створити повторення 15-го числа кожного 7‑го місяця між датами початку та завершення.
// 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"));
Щорічні повторення: тип NeverEnd
Наведений фрагмент коду показує, як можна встановити тип завершення, використовуючи 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);
Створити повторення з правила повторення
API Aspose.Email надає можливість створювати шаблон повторення з правила повторення (RRULE). Він аналізує інформацію з RRULE відповідно до специфікації RFC 5545 iCal та генерує шаблон повторення за допомогою методу MapiCalendarRecurrencePatternFactory.fromString. Наведений фрагмент коду показує, як створити шаблон повторення з правила повторення.
// 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));
Додати вкладення до повторюваних подій календаря
API Aspose.Email надає можливість додавати вкладення до повторюваних подій календаря.
// 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);
}
Встановити часовий пояс події календаря
API Aspose.Email надає можливість встановлювати часовий пояс календаря:
- інформація про часовий пояс для дати початку/закінчення
- інформація про часовий пояс для повторюваної зустрічі
- інформація про часовий пояс, яка описує, як конвертувати дату та час зустрічі у повторюваній серії до і від UTC
Наведений фрагмент коду показує, як встановити інформацію про часовий пояс календаря:
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);