반복 작업 다루기

일간 반복 작업

Aspose.Email은 일간 반복 생성을 다음을 사용하여 지원합니다 MapiCalendarDailyRecurrencePattern. EndAfterNOccurrences, EndAfterDate, NeverEnd를 포함한 세 가지 다른 Mapi 캘린더 반복 종료 유형을 사용할 수 있습니다. 이 섹션에서는 다양한 일간 반복 패턴 생성 방법을 보여줍니다.

일간 반복: EndAfterNOccurrence 종료 유형

이 유형의 반복에서는 다음과 같이 다른 정보와 함께 반복 횟수를 설정해야 합니다:

  1. 시작, 종료 및 마감 날짜를 설정합니다.
  2. 다음을 생성합니다 MapiTask.
  3. 작업 상태를 NotAssigned로 설정합니다.
  4. PatternType, Period, WeekStartDay, EndType, OccurenceCount와 같은 속성을 설정하여 일간 반복 객체를 만듭니다.
  5. MapiTask.setRecurrence 속성을 이 일간 반복 객체에 설정합니다.
  6. 이 메시지를 디스크에 저장합니다.

다음 코드 스니펏은 반복 종료 유형을 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" 옵션은 getOccurrenceCount() 함수가 계산한 OccurrenceCount 속성을 설정하여 Mapi 작업에서 구현됩니다. 이 함수는 시작 날짜, 종료 날짜 및 RRULE 문자열을 입력받습니다.

일간 반복: Every Day 값 설정

다음 코드 스니펏은 RRULE 문자열에서 period 값을 1, 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.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. EndAfterNOccurrences, EndAfterDate, NeverEnd를 포함한 세 가지 다른 Mapi 캘린더 반복 종료 유형을 사용할 수 있습니다. 이 섹션에서는 다양한 주간 반복 패턴 생성 방법을 보여줍니다.

주간 반복: EndAfterNOccurrences 종료 유형

이 유형의 반복에서는 다음과 같이 다른 정보와 함께 반복 횟수를 설정해야 합니다:

  1. 시작, 종료 및 마감 날짜를 설정합니다.
  2. 다음을 생성합니다 MapiTask.
  3. 작업 상태를 NotAssigned로 설정합니다.
  4. PatternType, Period, WeekStartDay, EndType, OccurenceCount와 같은 속성을 설정하여 주간 반복 객체를 만듭니다.
  5. MapiTask.setRecurrence 속성을 이 주간 반복 객체에 설정합니다.
  6. 이 메시지를 디스크에 저장합니다.

다음 코드 스니펏은 반복 종료 유형을 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" 옵션은 getOccurrenceCount() 함수가 계산한 OccurrenceCount 속성을 설정하여 Mapi 작업에서 구현됩니다. 이 함수는 시작 날짜, 종료 날짜 및 RRULE 문자열을 입력받습니다.

주간 반복: Every Day 값 설정

다음 코드 스니펏은 RRULE 문자열에서 period 값을 1, 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 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. EndAfterNOccurrences, EndAfterDate, NeverEnd를 포함한 세 가지 다른 Mapi 캘린더 반복 종료 유형을 사용할 수 있습니다. 이 섹션에서는 다양한 월간 반복 패턴 생성 방법을 보여줍니다.

월간 반복: EndAfterNOccurrences 종료 유형

이 유형의 반복에서는 다음과 같이 다른 정보와 함께 반복 횟수를 설정해야 합니다:

  1. 시작, 종료 및 마감 날짜를 설정합니다.
  2. 다음을 생성합니다 MapiTask.
  3. 작업 상태를 NotAssigned로 설정합니다.
  4. PatternType, Period, WeekStartDay, EndType, OccurenceCount와 같은 속성을 설정하여 월별 반복 객체를 만듭니다.
  5. MapiTask.setRecurrence 속성을 이 월별 반복 객체에 설정합니다.
  6. 이 메시지를 디스크에 저장합니다.

다음 코드 스니펏은 반복 종료 유형을 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" 옵션은 getOccurrenceCount() 함수가 계산한 OccurrenceCount 속성을 설정하여 Mapi 작업에서 구현됩니다. 이 함수는 시작 날짜, 종료 날짜 및 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로 설정하면 연간 반복 패턴을 구현할 수 있습니다. EndAfterNOccurrences, EndAfterDate, NeverEnd를 포함한 세 가지 다른 Mapi 캘린더 반복 종료 유형을 사용할 수 있습니다. 이 섹션에서는 다양한 연간 반복 패턴 생성 방법을 보여줍니다.

연간 반복: EndAfterNOccurrences 종료 유형

이 유형의 반복에서는 다음과 같이 다른 정보와 함께 반복 횟수를 설정해야 합니다:

  1. 시작, 종료 및 마감 날짜를 설정합니다.
  2. 다음을 생성합니다 MapiTask.
  3. 작업 상태를 NotAssigned로 설정합니다.
  4. PatternType, Period, WeekStartDay, EndType, OccurenceCount와 같은 속성을 설정하여 월별 반복 객체를 만듭니다.
  5. 연간 반복을 달성하려면 MapiTask.setRecurrence 속성을 이 월별 반복 객체에 설정하세요.
  6. 이 메시지를 디스크에 저장합니다.

다음 코드 스니펏은 반복 종료 유형을 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" 옵션은 getOccurrenceCount() 함수가 계산한 OccurrenceCount 속성을 설정하여 Mapi 작업에서 구현됩니다. 이 함수는 시작 날짜, 종료 날짜 및 RRULE 문자열을 입력받습니다. 다음 코드 스니펏은 시작과 종료 날짜 사이의 매 7개월마다 15일에 반복을 생성하는 방법을 보여줍니다.

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

반복 규칙에서 반복 생성

Aspose.Email API는 반복 규칙(RRULE)에서 반복 패턴을 생성하는 기능을 제공합니다. RFC 5545 iCal 사양에 따라 RRULE에서 정보를 파싱하고 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));

반복 캘린더 이벤트에 첨부 파일 추가

Aspose.Email API는 반복 캘린더 이벤트에 첨부 파일을 추가하는 기능을 제공합니다.

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

캘린더 이벤트 시간대 설정

Aspose.Email API는 캘린더 시간대를 설정하는 기능을 제공합니다:

  • 시작/종료 날짜에 대한 시간대 정보
  • 반복 회의를 위한 시간대 정보
  • 반복 시리즈의 회의 일시를 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);