Praca z powtórzeniami
Praca z dziennymi powtórzeniami
Aspose.Email obsługuje tworzenie dziennych powtórzeń przy użyciu MapiCalendarDailyRecurrencePattern. Można użyć trzech różnych typów zakończenia powtórzenia kalendarza Mapi, w tym EndAfterNOccurrences, EndAfterDate oraz NeverEnd. Ten rozdział demonstruje tworzenie różnych dziennych wzorców powtarzania.
Dzienne powtarzania: typ EndAfterNOccurrence
W tym typie powtórzenia liczba powtórzeń powinna być ustawiona wraz z innymi informacjami, jak poniżej:
- Ustaw daty początkową, końcową i termin realizacji.
- Utwórz MapiTask.
- Ustaw stan zadania na NotAssigned.
- Utwórz obiekt dziennego powtórzenia, ustawiając właściwości takie jak PatternType, Period, WeekStartDay, EndType oraz OccurenceCount.
- Ustaw właściwość MapiTask.setRecurrence na ten obiekt dziennego powtórzenia.
- Zapisz tę wiadomość na dysku.
Poniższy fragment kodu pokazuje, jak utworzyć zadanie z typem zakończenia powtórzenia 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);
Poniższa funkcja może być użyta do obliczenia liczby zdarzeń pomiędzy dwoma datami:
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();
}
Ustawianie wartości liczby wystąpień
Poniższy fragment kodu pokazuje, jak ustawić wartość liczby wystąpień.
// 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);
Dzienne powtarzania: typ EndAfterDate
Opcja "End By" w zadaniu Mapi jest realizowana poprzez ustawienie właściwości OccurrenceCount obliczanej przez funkcję getOccurrenceCount(). Funkcja ta przyjmuje datę rozpoczęcia, datę zakończenia i ciąg RRULE.
Dzienne powtarzania: ustawianie wartości Every Day
Poniższy fragment kodu pokazuje, jak ustawić wartość period na 1 oraz wartość INTERVAL na 1 w ciągu 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);
Wartość Every Day można ustawić na dowolną odpowiednią wartość, jak pokazano w poniższym przykładzie:
// 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"));
Dzienne powtarzania: typ NeverEnd
Typ zakończenia można ustawić przy użyciu MapiCalendarRecurrenceEndType.NeverEnd. Właściwość Period lub INTERVAL można ustawić na wymaganą wartość, np. 1, w poniższym przykładzie.
// 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);
Praca z tygodniowymi powtórzeniami
Aspose.Email zapewnia rozbudowane funkcje do tworzenia tygodniowych powtórzeń przy użyciu MapiCalendarWeeklyRecurrencePattern. Można użyć trzech różnych typów zakończenia powtórzenia kalendarza Mapi, w tym EndAfterNOccurrences, EndAfterDate oraz NeverEnd. Ten rozdział demonstruje tworzenie różnych tygodniowych wzorców powtarzania.
Tygodniowe powtarzania: typ EndAfterNOccurrences
W tym typie powtórzenia liczba powtórzeń powinna być ustawiona wraz z innymi informacjami, jak poniżej:
- Ustaw daty początkową, końcową i termin realizacji.
- Utwórz MapiTask.
- Ustaw stan zadania na NotAssigned.
- Utwórz obiekt tygodniowego powtórzenia, ustawiając właściwości takie jak PatternType, Period, WeekStartDay, EndType oraz OccurenceCount.
- Ustaw właściwość MapiTask.setRecurrence na ten obiekt tygodniowego powtórzenia.
- Zapisz tę wiadomość na dysku.
Poniższy fragment kodu pokazuje, jak utworzyć zadanie z typem zakończenia powtórzenia 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);
Poniższa funkcja może być użyta do obliczenia liczby zdarzeń pomiędzy dwoma datami:
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();
}
Wybieranie wielu dni w tygodniu
Poniższy fragment kodu pokazuje, jak wybrać wiele dni w tygodniu.
// 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"));
Wybieranie wielu dni w tygodniu i ustawianie interwałów
Poniższy fragment kodu pokazuje, jak wybrać wiele dni w tygodniu i ustawić interwały.
// 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"));
Tygodniowe powtarzania: typ EndAfterDate
Opcja "End By" w zadaniu Mapi jest realizowana poprzez ustawienie właściwości OccurrenceCount obliczanej przez funkcję getOccurrenceCount(). Funkcja ta przyjmuje datę rozpoczęcia, datę zakończenia oraz ciąg RRULE.
Tygodniowe powtarzania: ustawianie wartości Every Day
Poniższy fragment kodu pokazuje, jak ustawić wartość period na 1 oraz wartość INTERVAL na 1 w ciągu 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"));
Wartość Every Day można ustawić na dowolną odpowiednią wartość, a wiele dni można wybrać, jak pokazano w poniższym przykładzie:
// 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"));
Tygodniowe powtarzania: typ NeverEnd
Typ zakończenia można ustawić przy użyciu MapiCalendarRecurrenceEndType.NeverEnd. Właściwość Period lub INTERVAL można ustawić na wymaganą wartość, np. 1, w poniższym przykładzie.
// 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"));
Praca z miesięcznymi powtórzeniami
Aspose.Email obsługuje tworzenie miesięcznych powtórzeń przy użyciu MapiCalendarMonthlyRecurrencePattern. Można użyć trzech różnych typów zakończenia powtórzenia kalendarza Mapi, w tym EndAfterNOccurrences, EndAfterDate oraz NeverEnd. Ten rozdział demonstruje tworzenie różnych miesięcznych wzorców powtarzania.
Miesięczne powtarzania: typ EndAfterNOccurrences
W tym typie powtórzenia należy ustawić liczbę powtórzeń wraz z innymi informacjami, jak poniżej:
- Ustaw daty początkową, końcową i termin realizacji.
- Utwórz MapiTask.
- Ustaw stan zadania na NotAssigned.
- Utwórz obiekt miesięcznego powtórzenia, ustawiając właściwości takie jak PatternType, Period, WeekStartDay, EndType oraz OccurenceCount.
- Ustaw właściwość MapiTask.setRecurrence na ten obiekt miesięcznego powtórzenia.
- Zapisz tę wiadomość na dysku.
Poniższy fragment kodu pokazuje, jak utworzyć zadanie z typem zakończenia powtórzenia 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);
Poniższa funkcja może być użyta do obliczenia liczby zdarzeń pomiędzy dwoma datami:
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();
}
Ustaw stałą liczbę wystąpień
Poniższy fragment kodu pokazuje, jak ustawić stałą liczbę wystąpień.
// 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);
Miesięczne powtarzania: typ EndAfterDate
Opcja "End By" w zadaniu Mapi jest realizowana poprzez ustawienie właściwości OccurrenceCount obliczanej przez funkcję getOccurrenceCount(). Funkcja ta przyjmuje datę rozpoczęcia, datę zakończenia oraz ciąg RRULE. Poniższy fragment kodu pokazuje, jak utworzyć powtórzenie 15. dnia każdego miesiąca pomiędzy datą rozpoczęcia i zakończenia.
// 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);
Miesięczne powtarzania: typ NeverEnd
Poniższy fragment kodu pokazuje, jak można ustawić typ zakończenia przy użyciu 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);
Praca z rocznymi powtórzeniami
Aspose.Email obsługuje tworzenie rocznych powtórzeń przy użyciu MapiCalendarMonthlyRecurrencePattern. Ustawiając właściwość period na 12, możemy uzyskać roczny wzorzec powtarzania. Można użyć trzech różnych typów zakończenia powtórzenia kalendarza Mapi, w tym EndAfterNOccurrences, EndAfterDate oraz NeverEnd. Ten rozdział demonstruje tworzenie różnych rocznych wzorców powtarzania.
Roczne powtarzania: typ EndAfterNOccurrences
W tym typie powtórzenia należy ustawić liczbę powtórzeń wraz z innymi informacjami, jak poniżej:
- Ustaw daty początkową, końcową i termin realizacji.
- Utwórz MapiTask.
- Ustaw stan zadania na NotAssigned.
- Utwórz obiekt miesięcznego powtórzenia, ustawiając właściwości takie jak PatternType, Period, WeekStartDay, EndType oraz OccurenceCount.
- Ustaw właściwość MapiTask.setRecurrence na ten obiekt miesięcznego powtórzenia, aby uzyskać roczne powtórzenie.
- Zapisz tę wiadomość na dysku.
Poniższy fragment kodu pokazuje, jak utworzyć zadanie z typem zakończenia powtórzenia 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);
Roczne powtarzania: typ EndAfterDate
Opcja "End By" w zadaniu Mapi jest realizowana poprzez ustawienie właściwości OccurrenceCount obliczanej przez funkcję getOccurrenceCount(). Funkcja ta przyjmuje datę rozpoczęcia, datę zakończenia oraz ciąg RRULE. Poniższy fragment kodu pokazuje, jak utworzyć powtórzenie 15. dnia każdego 7. miesiąca pomiędzy datą rozpoczęcia i zakończenia.
// 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"));
Roczne powtarzania: typ NeverEnd
Poniższy fragment kodu pokazuje, jak można ustawić typ zakończenia przy użyciu 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);
Generowanie powtarzania z reguły powtarzania
API Aspose.Email zapewnia możliwość generowania wzorca powtarzania z Reguły Powtarzania (RRULE). Analizuje informacje z RRULE zgodnie ze specyfikacjami iCal RFC 5545 i generuje wzorzec powtarzania przy użyciu metody MapiCalendarRecurrencePatternFactory.fromString. Poniższy fragment kodu pokazuje, jak wygenerować wzorzec powtarzania z reguły powtarzania.
// 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));
Dodaj załącznik do powtarzających się zdarzeń kalendarza
API Aspose.Email zapewnia możliwość dodawania załączników do powtarzających się zdarzeń kalendarza.
// 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);
}
Ustaw strefę czasową zdarzenia kalendarza
API Aspose.Email zapewnia możliwość ustawienia strefy czasowej kalendarza:
- informacje o strefie czasowej dla daty rozpoczęcia/zakończenia
- informacje o strefie czasowej dla powtarzającego się spotkania
- informacje o strefie czasowej opisujące, jak przekształcić datę i godzinę spotkania w serii powtarzalnej do i z UTC
Poniższy fragment kodu pokazuje, jak ustawić informacje o strefie czasowej kalendarza:
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);