کار با تکرارها

کار با تکرارهای روزانه

Aspose.Email از ایجاد تکرارهای روزانه با استفاده از پشتیبانی می‌کند MapiCalendarDailyRecurrencePattern. می‌توان از سه نوع مختلف پایان تکرار تقویم Mapi استفاده کرد شامل EndAfterNOccurrences، EndAfterDate و NeverEnd. این بخش ایجاد الگوهای مختلف تکرار روزانه را نشان می‌دهد.

تکرارهای روزانه: نوع 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" گزینه در Mapi Task با تنظیم ویژگی OccurrenceCount که توسط تابع getOccurrenceCount() محاسبه می‌شود، به‌دست می‌آید. این تابع تاریخ شروع، تاریخ پایان و رشته RRULE را می‌گیرد.

تکرارهای روزانه: تنظیم مقدار Every Day

کد نمونه زیر نشان می‌دهد چگونه مقدار period را به 1 و مقدار INTERVAL را نیز در رشته RRULE به 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. می‌توان از سه نوع مختلف پایان تکرار تقویم Mapi استفاده کرد شامل EndAfterNOccurrences، EndAfterDate و NeverEnd. این بخش ایجاد الگوهای مختلف تکرار هفتگی را نشان می‌دهد.

تکرارهای هفتگی: نوع 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" گزینه در Mapi Task با تنظیم ویژگی OccurrenceCount که توسط تابع getOccurrenceCount() محاسبه می‌شود، به‌دست می‌آید. این تابع تاریخ شروع، تاریخ پایان و رشته RRULE را می‌گیرد.

تکرارهای هفتگی: تنظیم مقدار Every Day

کد نمونه زیر نشان می‌دهد چگونه مقدار period را به 1 و مقدار INTERVAL را نیز در رشته RRULE به 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. می‌توان از سه نوع مختلف پایان تکرار تقویم Mapi استفاده کرد شامل EndAfterNOccurrences، EndAfterDate و NeverEnd. این بخش ایجاد الگوهای مختلف تکرار ماهانه را نشان می‌دهد.

تکرارهای ماهانه: نوع 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" گزینه در 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

در این نوع تکرار، تعداد تکرارها به همراه سایر اطلاعات به شرح زیر تنظیم می‌شود:

  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" گزینه در Mapi Task با تنظیم ویژگی OccurrenceCount که توسط تابع getOccurrenceCount() محاسبه می‌شود، حاصل می‌شود. این تابع تاریخ شروع، تاریخ پایان و رشته RRULE را می‌گیرد. کد نمونه زیر نشان می‌دهد چگونه یک تکرار در روز 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);

تولید تکرار از قاعده تکرار

API Aspose.Email قابلیت تولید الگوی تکرار از قاعده تکرار (RRULE) را فراهم می‌کند. این API اطلاعات را از 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);