ทำงานกับการทำซ้ำ
ทำงานกับการทำซ้ำรายวัน
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);
สร้างการทำซ้ำจากกฎการทำซ้ำ
Aspose.Email API มีความสามารถในการสร้างรูปแบบการทำซ้ำจากกฎการทำซ้ำ (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));
เพิ่มไฟล์แนบให้กับเหตุการณ์ปฏิทินที่ทำซ้ำ
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);