עבודה עם חזרות

עבודה עם חזרות יומיות

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 מושגת על ידי הגדרת המאפיין 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

בסוג חזרה זה, יש לקבוע את מספר החזרות יחד עם מידע נוסף כדלקמן:

  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 מושגת על ידי הגדרת המאפיין 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

בסוג חזרה זה, מספר החזרות צריך להיקבע יחד עם מידע נוסף כמתואר להלן:

  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 מושגת על ידי הגדרת המאפיין 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 מושגת על ידי הגדרת המאפיין 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);