Arbeta med återkomster

Arbeta med dagliga återkomster

Aspose.Email stödjer skapandet av dagliga återkomster med hjälp av MapiCalendarDailyRecurrencePattern. Tre olika Mapi‑kalenderåterkomstenssluttyper kan användas inklusive EndAfterNOccurrences, EndAfterDate och NeverEnd. Detta avsnitt demonstrerar skapandet av olika dagliga återkomstmönster.

Dagliga återkomster: EndAfterNOccurrence‑återkomstate

I denna typ av återkomst ska antalet återkomster anges tillsammans med annan information enligt följande:

  1. Ange start-, slut- och förfallodatum.
  2. Skapa en MapiTask.
  3. Sätt uppgiftsstatus till NotAssigned.
  4. Skapa det dagliga återkomstande objektet genom att sätta egenskaper som PatternType, Period, WeekStartDay, EndType och OccurenceCount.
  5. Sätt egenskapen MapiTask.setRecurrence till detta dagliga återkomstande objekt.
  6. Spara detta meddelande på disk.

Följande kodsnutt visar hur du skapar en uppgift med återkomstens sluttyp som 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);

Följande funktion kan användas för att beräkna antalet händelser mellan de två datumen:

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

Ange värdet för antal återkomster

Följande kodsnutt visar hur du sätter värdet för antal återkomster.

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

Dagliga återkomster: EndAfterDate‑återkomstate

"End By"‑alternativet i Mapi‑uppgiften uppnås genom att sätta OccurrenceCount-egenskapen beräknad av getOccurrenceCount()‑funktionen. Funktionen tar startdatum, slutdatum och RRULE‑sträng.

Dagliga återkomster: Ställa in Every Day‑värdet

Följande kodsnutt visar hur du sätter period‑värdet till 1 och INTERVAL‑värdet till 1 i RRULE‑strängen också.

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

Värdet för Every Day kan sättas till ett lämpligt värde som visas i följande exempel:

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

Dagliga återkomster: NeverEnd‑återkomstate

Sluttyp kan sättas med MapiCalendarRecurrenceEndType.NeverEnd. Period eller INTERVAL kan sättas till önskat värde, t.ex. 1 i följande exempel.

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

Arbeta med veckovisa återkomster

Aspose.Email erbjuder omfattande funktioner för att skapa veckovisa återkomster med hjälp av MapiCalendarWeeklyRecurrencePattern. Tre olika Mapi‑kalenderåterkomstenssluttyper kan användas inklusive EndAfterNOccurrences, EndAfterDate och NeverEnd. Detta avsnitt demonstrerar skapandet av olika veckovisa återkomstmönster.

Veckovisa återkomster: EndAfterNOccurrences‑återkomstate

I denna typ av återkomst ska antalet återkomster anges tillsammans med annan information enligt följande:

  1. Ange start-, slut- och förfallodatum.
  2. Skapa en MapiTask.
  3. Sätt uppgiftsstatus till NotAssigned.
  4. Skapa det veckovisa återkomstande objektet genom att sätta egenskaper som PatternType, Period, WeekStartDay, EndType och OccurenceCount.
  5. Sätt egenskapen MapiTask.setRecurrence till detta veckovisa återkomstande objekt.
  6. Spara detta meddelande på disk.

Följande kodsnutt visar hur du skapar en uppgift med återkomstens sluttyp som 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);

Följande funktion kan användas för att beräkna antalet händelser mellan de två datumen:

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

Välja flera dagar i en vecka

Följande kodsnutt visar hur du väljer flera dagar i en vecka.

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

Välja flera dagar i en vecka och ange intervall

Följande kodsnutt visar hur du väljer flera dagar i en vecka och anger intervall.

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

Veckovisa återkomster: EndAfterDate‑återkomstate

"End By"‑alternativet i Mapi‑uppgiften uppnås genom att sätta OccurrenceCount-egenskapen beräknad av getOccurrenceCount()‑funktionen. Funktionen tar startdatum, slutdatum och RRULE‑sträng.

Veckovisa återkomster: Ställa in Every Day‑värdet

Följande kodsnutt visar hur du sätter period‑värdet till 1 och INTERVAL‑värdet till 1 i RRULE‑strängen också.

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

Värdet för Every Day kan sättas till ett lämpligt värde och flera dagar kan väljas som visas i följande exempel:

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

Veckovisa återkomster: NeverEnd‑återkomstate

Sluttyp kan sättas med MapiCalendarRecurrenceEndType.NeverEnd. Period eller INTERVAL kan sättas till önskat värde, t.ex. 1 i följande exempel.

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

Arbeta med månatliga återkomster

Aspose.Email stöder skapandet av månatliga återkomster med hjälp av MapiCalendarMonthlyRecurrencePattern. Tre olika Mapi‑kalenderåterkomstenssluttyper kan användas inklusive EndAfterNOccurrences, EndAfterDate och NeverEnd. Detta avsnitt demonstrerar skapandet av olika månatliga återkomstmönster.

Månatliga återkomster: EndAfterNOccurrences‑återkomstate

I denna typ av återkomst ska antalet återkomster anges tillsammans med annan information enligt följande:

  1. Ange start-, slut- och förfallodatum.
  2. Skapa en MapiTask.
  3. Sätt uppgiftsstatus till NotAssigned.
  4. Skapa det månatliga återkomstande objektet genom att sätta egenskaper som PatternType, Period, WeekStartDay, EndType och OccurenceCount.
  5. Sätt egenskapen MapiTask.setRecurrence till detta månatliga återkomstande objekt.
  6. Spara detta meddelande på disk.

Följande kodsnutt visar hur du skapar en uppgift med återkomstens sluttyp som 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);

Följande funktion kan användas för att beräkna antalet händelser mellan två datum:

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

Ange fast antal återkomster

Följande kodsnutt visar hur du sätter ett fast antal återkomster.

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

Månatliga återkomster: EndAfterDate‑återkomstate

"End By"‑alternativet i Mapi‑uppgiften uppnås genom att sätta OccurrenceCount-egenskapen beräknad av getOccurrenceCount()‑funktionen. Funktionen tar startdatum, slutdatum och RRULE‑sträng. Följande kodsnutt visar hur du skapar en återkomst den 15:e varje månad mellan start- och slutdatum.

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

Månatliga återkomster: NeverEnd‑återkomstate

Följande kodsnutt visar hur sluttyp kan sättas med 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);

Arbeta med årliga återkomster

Aspose.Email stöder skapandet av årliga återkomster med hjälp av MapiCalendarMonthlyRecurrencePattern. Genom att sätta period‑egenskapen till 12 kan vi uppnå ett årligt återkomstmönster. Tre olika Mapi‑kalenderåterkomstenssluttyper kan användas inklusive EndAfterNOccurrences, EndAfterDate och NeverEnd. Det här avsnittet demonstrerar skapandet av olika årliga återkomstmönster.

Årliga återkomster: EndAfterNOccurrences‑återkomstate

I denna typ av återkomst ska antalet återkomster anges tillsammans med annan information enligt följande:

  1. Ange start-, slut- och förfallodatum.
  2. Skapa en MapiTask.
  3. Sätt uppgiftsstatus till NotAssigned.
  4. Skapa det månatliga återkomstande objektet genom att sätta egenskaper som PatternType, Period, WeekStartDay, EndType och OccurenceCount.
  5. Sätt egenskapen MapiTask.setRecurrence till detta månadsåterkomstande objekt för att uppnå den årliga återkomsten.
  6. Spara detta meddelande på disk.

Följande kodsnutt visar hur du skapar en uppgift med återkomstens sluttyp som 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);

Årliga återkomster: EndAfterDate‑återkomstate

"End By"‑alternativet i Mapi‑uppgiften uppnås genom att sätta OccurrenceCount-egenskapen beräknad av getOccurrenceCount()‑funktionen. Funktionen tar emot startdatum, slutdatum och RRULE‑sträng. Följande kodsnutt visar hur du skapar en återkomst den 15:e varje sjunde månad mellan start- och slutdatum.

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

Årliga återkomster: NeverEnd‑återkomstate

Följande kodsnutt visar hur sluttyp kan sättas med 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);

Generera återkomst från återkomstregel

Aspose.Email‑API ger möjligheten att generera återkomstmönster från återkomstregel (RRULE). Den analyserar informationen från RRULE enligt RFC 5545 iCal‑specifikationerna och genererar återkomstmönstret med metoden MapiCalendarRecurrencePatternFactory.fromString. Följande kodsnutt visar hur du genererar ett återkomstmönster från återkomstregeln.

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

Lägg till bilaga till återkommande kalenderhändelser

Aspose.Email‑API ger möjligheten att lägga till bilagor till återkommande kalenderhändelser.

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

Ange kalenderhändelsens tidszon

Aspose.Email‑API ger möjligheten att sätta kalenderns tidszon:

  • tidszonsinformation för start-/slutdatum
  • tidszonsinformation för ett återkommande möte
  • tidszonsinformation som beskriver hur mötesdatum och -tid konverteras i en återkommande serie till och från UTC

Följande kodsnutt visar hur du anger kalenderns tidszonsinformation:

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