Работа с Повторами
Работа с Ежедневными Повторами
Aspose.Email поддерживает создание ежедневных повторов с использованием MapiCalendarDailyRecurrencePattern. Можно использовать три разных типа окончания повторов календаря Mapi, включая EndAfterNOccurrences, EndAfterDate и NeverEnd. Этот раздел демонстрирует создание различных типов ежедневного повтора.
Ежедневные Повторы: Тип Повтора EndAfterNOccurrence
В этом типе повтора количество повторов устанавливается вместе с другой информацией следующим образом:
- Установите дату начала, окончания и выполнения.
- Создайте MapiTask.
- Установите состояние задачи на NotAssigned.
- Создайте объект ежедневного повтора, задав такие свойства, как PatternType, Period, WeekStartDay, EndType и OccurenceCount.
- Установите свойство MapiTask.Recurrence на этот объект ежедневного повтора.
- Сохраните это сообщение на диске.
Следующий фрагмент кода показывает, как создать задачу с типом окончания повтора 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(); | |
TimeZone localZone = TimeZone.CurrentTimeZone; | |
TimeSpan timeSpan = localZone.GetUtcOffset(DateTime.Now); | |
DateTime StartDate = new DateTime(2015, 7, 16); | |
StartDate = StartDate.Add(timeSpan); | |
DateTime DueDate = new DateTime(2015, 7, 16); | |
DateTime endByDate = new DateTime(2015, 8, 1); | |
DueDate = DueDate.Add(timeSpan); | |
endByDate = endByDate.Add(timeSpan); | |
MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate); | |
task.State = MapiTaskState.NotAssigned; | |
// Set the Daily recurrence | |
var rec = new MapiCalendarDailyRecurrencePattern | |
{ | |
PatternType = MapiCalendarRecurrencePatternType.Day, | |
Period = 1, | |
WeekStartDay = DayOfWeek.Sunday, | |
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=DAILY"), | |
}; | |
if (rec.OccurrenceCount==0) | |
{ | |
rec.OccurrenceCount = 1; | |
} | |
task.Recurrence = rec; | |
task.Save(dataDir + "Daily_out.msg", TaskSaveFormat.Msg); |
Следующая функция может быть использована для вычисления количества событий между двумя датами:
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
private static uint GetOccurrenceCount(DateTime start, DateTime endBy, string rrule) | |
{ | |
Aspose.iCalendar.RecurrencePattern pattern = new Aspose.iCalendar.RecurrencePattern(string.Format("DTSTART:{0}\r\nRRULE:{1}", start.ToString("yyyyMMdd"),rrule)); | |
Aspose.iCalendar.DateCollection dates = pattern.GenerateOccurrences(start, endBy); | |
return (uint)dates.Count; | |
} |
Установка значения количества повторов
Следующий фрагмент кода показывает, как установить значение количества повторов.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set the Daily recurrence | |
var record = new MapiCalendarDailyRecurrencePattern | |
{ | |
PatternType = MapiCalendarRecurrencePatternType.Day, | |
Period = 1, | |
WeekStartDay = DayOfWeek.Sunday, | |
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences, | |
OccurrenceCount = 5, | |
}; | |
task.Recurrence = record; |
Ежедневные Повторы: Тип Повтора EndAfterDate
Опция “End By” в Mapi Task достигается путем установки свойства OccurrenceCount, рассчитанного с помощью функции GetOccurrenceCount(). Эта функция принимает дату начала, дату окончания и строку RRULE.
Ежедневные Повторы: Установка значения Каждый День
Следующий фрагмент кода показывает, как установить значение периода на 1 и значение INTERVAL на 1 в строке RRULE.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set the Daily recurrence | |
var record = new MapiCalendarDailyRecurrencePattern | |
{ | |
PatternType = MapiCalendarRecurrencePatternType.Day, | |
Period = 1, | |
EndType = MapiCalendarRecurrenceEndType.EndAfterDate, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=DAILY;INTERVAL=1"), | |
EndDate = endByDate | |
}; |
Значение Каждый День можно установить на любое подходящее значение, как показано в следующем примере:
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set the Daily recurrence | |
var record = new MapiCalendarDailyRecurrencePattern | |
{ | |
PatternType = MapiCalendarRecurrencePatternType.Day, | |
Period = 2, | |
EndType = MapiCalendarRecurrenceEndType.EndAfterDate, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=DAILY;INTERVAL=2"), | |
}; |
Ежедневные Повторы: Тип Повтора NeverEnd
Тип окончания можно установить, используя MapiCalendarRecurrenceEndType.NeverEnd. Период или INTERVAL можно установить на требуемое значение, скажем 1, в следующем примере.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set the Daily recurrence | |
var record = new MapiCalendarDailyRecurrencePattern | |
{ | |
PatternType = MapiCalendarRecurrencePatternType.Day, | |
Period = 1, | |
EndType = MapiCalendarRecurrenceEndType.NeverEnd, | |
}; |
Работа с Еженедельными Повторами
Aspose.Email предоставляет богатые возможности для создания еженедельных повторов с использованием MapiCalendarWeeklyRecurrencePattern. Можно использовать три разных типа окончания повторов календаря Mapi, включая EndAfterNOccurrences, EndAfterDate и NeverEnd. Этот раздел демонстрирует создание различных типов еженедельного повтора.
Еженедельные Повторы: Тип Повтора EndAfterNOccurrences
В этом типе повтора количество повторов устанавливается вместе с другой информацией следующим образом:
- Установите дату начала, окончания и выполнения.
- Создайте MapiTask.
- Установите состояние задачи на NotAssigned.
- Создайте объект еженедельного повтора, задав такие свойства, как PatternType, Period, WeekStartDay, EndType и OccurenceCount.
- Установите свойство MapiTask.Recurrence на этот объект еженедельного повтора.
- Сохраните это сообщение на диске.
Следующий фрагмент кода показывает, как создать задачу с типом окончания повтора 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(); | |
TimeZone localZone = TimeZone.CurrentTimeZone; | |
TimeSpan ts = localZone.GetUtcOffset(DateTime.Now); | |
DateTime StartDate = new DateTime(2015, 7, 16); | |
StartDate = StartDate.Add(ts); | |
DateTime DueDate = new DateTime(2015, 7, 16); | |
DateTime endByDate = new DateTime(2015, 9, 1); | |
DueDate = DueDate.Add(ts); | |
endByDate = endByDate.Add(ts); | |
MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate); | |
task.State = MapiTaskState.NotAssigned; | |
// Set the weekly recurrence | |
var rec = new MapiCalendarWeeklyRecurrencePattern | |
{ | |
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences, | |
PatternType = MapiCalendarRecurrencePatternType.Week, | |
Period = 1, | |
WeekStartDay = DayOfWeek.Sunday, | |
DayOfWeek = MapiCalendarDayOfWeek.Friday, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR"), | |
}; | |
if (rec.OccurrenceCount == 0) | |
{ | |
rec.OccurrenceCount = 1; | |
} | |
task.Recurrence = rec; | |
task.Save(dataDir + "Weekly_out.msg", TaskSaveFormat.Msg); |
Следующая функция может быть использована для вычисления количества событий между двумя датами:
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
private static uint GetOccurrenceCount(DateTime start, DateTime endBy, string rrule) | |
{ | |
CalendarRecurrence pattern = new CalendarRecurrence(string.Format("DTSTART:{0}\r\nRRULE:{1}", start.ToString("yyyyMMdd"),rrule)); | |
DateCollection dates = pattern.GenerateOccurrences(start, endBy); | |
return (uint)dates.Count; | |
} |
Выбор нескольких дней в неделю
Следующий фрагмент кода показывает, как выбрать несколько дней в неделю.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set the weekly recurrence | |
var rec = new MapiCalendarWeeklyRecurrencePattern | |
{ | |
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences, | |
PatternType = MapiCalendarRecurrencePatternType.Week, | |
Period = 1, | |
WeekStartDay = DayOfWeek.Sunday, | |
DayOfWeek = MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday, | |
OccurrenceCount = 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-.NET | |
// Set the weekly recurrence | |
var rec = new MapiCalendarWeeklyRecurrencePattern | |
{ | |
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences, | |
PatternType = MapiCalendarRecurrencePatternType.Week, | |
Period = 2, | |
WeekStartDay = DayOfWeek.Sunday, | |
DayOfWeek = MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO;INTERVAL=2"), | |
}; |
Еженедельные Повторы: Тип Повтора EndAfterDate
Опция “End By” в Mapi Task достигается путем установки свойства OccurrenceCount, рассчитанного с помощью функции GetOccurrenceCount(). Эта функция принимает дату начала, дату окончания и строку RRULE.
Еженедельные Повторы: Установка значения Каждый День
Следующий фрагмент кода показывает, как установить значение периода на 1 и значение INTERVAL на 1 в строке RRULE.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set the weekly recurrence | |
var rec = new MapiCalendarWeeklyRecurrencePattern | |
{ | |
EndType = MapiCalendarRecurrenceEndType.EndAfterDate, | |
PatternType = MapiCalendarRecurrencePatternType.Week, | |
Period = 1, | |
WeekStartDay = DayOfWeek.Sunday, | |
DayOfWeek = MapiCalendarDayOfWeek.Friday, | |
EndDate = endByDate, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR;INTERVAL=1"), | |
}; |
Значение Каждый День можно установить на любое подходящее значение, и можно выбрать несколько дней, как показано в следующем примере:
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
var record = new MapiCalendarWeeklyRecurrencePattern | |
{ | |
EndType = MapiCalendarRecurrenceEndType.EndAfterDate, | |
PatternType = MapiCalendarRecurrencePatternType.Week, | |
Period = 2, | |
WeekStartDay = DayOfWeek.Sunday, | |
EndDate = endByDate, | |
DayOfWeek = MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO;INTERVAL=2"), | |
}; |
Еженедельные Повторы: Тип Повтора NeverEnd
Тип окончания можно установить, используя MapiCalendarRecurrenceEndType.NeverEnd. Период или INTERVAL можно установить на требуемое значение, скажем 1, в следующем примере.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set the weekly recurrence | |
var recurrence = new MapiCalendarWeeklyRecurrencePattern | |
{ | |
EndType = MapiCalendarRecurrenceEndType.NeverEnd, | |
PatternType = MapiCalendarRecurrencePatternType.Week, | |
Period = 1, | |
WeekStartDay = DayOfWeek.Sunday, | |
DayOfWeek = MapiCalendarDayOfWeek.Friday, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=WEEKLY;BYDAY=FR"), | |
}; |
Работа с Ежемесячными Повторами
Aspose.Email поддерживает создание ежемесячных повторов с использованием MapiCalendarMonthlyRecurrencePattern. Можно использовать три разных типа окончания повторов календаря Mapi, включая EndAfterNOccurrences, EndAfterDate и NeverEnd. Этот раздел демонстрирует создание различных типов ежемесячного повтора.
Ежемесячные Повторы: Тип Повтора EndAfterNOccurrences
В этом типе повтора количество повторов устанавливается вместе с другой информацией следующим образом:
- Установите дату начала, окончания и выполнения.
- Создайте MapiTask.
- Установите состояние задачи на NotAssigned.
- Создайте объект ежемесячного повтора, задав такие свойства, как PatternType, Period, WeekStartDay, EndType и OccurenceCount.
- Установите свойство MapiTask.Recurrence на этот объект ежемесячного повтора.
- Сохраните это сообщение на диске.
Следующий фрагмент кода показывает, как создать задачу с типом окончания повтора 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(); | |
TimeZone localZone = TimeZone.CurrentTimeZone; | |
TimeSpan ts = localZone.GetUtcOffset(DateTime.Now); | |
DateTime StartDate = new DateTime(2015, 7, 16); | |
StartDate = StartDate.Add(ts); | |
DateTime DueDate = new DateTime(2015, 7, 16); | |
DateTime endByDate = new DateTime(2015, 12, 31); | |
DueDate = DueDate.Add(ts); | |
endByDate = endByDate.Add(ts); | |
MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate); | |
task.State = MapiTaskState.NotAssigned; | |
// Set the Monthly recurrence | |
var rec = new MapiCalendarMonthlyRecurrencePattern | |
{ | |
Day = 15, | |
Period = 1, | |
PatternType = MapiCalendarRecurrencePatternType.Month, | |
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=MONTHLY;BYMONTHDAY=15;INTERVAL=1"), | |
WeekStartDay = DayOfWeek.Monday, | |
}; | |
if (rec.OccurrenceCount == 0) | |
{ | |
rec.OccurrenceCount = 1; | |
} | |
task.Recurrence = rec; | |
//task.Save(dataDir + "Monthly_out.msg", TaskSaveFormat.Msg); |
Следующая функция может быть использована для вычисления количества событий между двумя датами:
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
private static uint GetOccurrenceCount(DateTime start, DateTime endBy, string rrule) | |
{ | |
CalendarRecurrence pattern = new CalendarRecurrence(string.Format("DTSTART:{0}\r\nRRULE:{1}", start.ToString("yyyyMMdd"), rrule)); | |
DateCollection dates = pattern.GenerateOccurrences(start, endBy); | |
return (uint)dates.Count; | |
} |
Установка фиксированного количества повторений
Следующий фрагмент кода показывает, как установить фиксированное количество повторений.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set the Monthly recurrence | |
var records = new MapiCalendarMonthlyRecurrencePattern | |
{ | |
Day = 15, | |
Period = 1, | |
PatternType = MapiCalendarRecurrencePatternType.Month, | |
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences, | |
OccurrenceCount = 5, | |
WeekStartDay = 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-.NET | |
// The path to the File directory. | |
string dataDir = RunExamples.GetDataDir_Outlook(); | |
TimeZone localZone = TimeZone.CurrentTimeZone; | |
TimeSpan ts = localZone.GetUtcOffset(DateTime.Now); | |
DateTime StartDate = new DateTime(2015, 7, 1); | |
StartDate = StartDate.Add(ts); | |
DateTime DueDate = new DateTime(2015, 7, 1); | |
DateTime endByDate = new DateTime(2015, 12, 31); | |
DueDate = DueDate.Add(ts); | |
endByDate = endByDate.Add(ts); | |
MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate); | |
task.State = MapiTaskState.NotAssigned; | |
// Set the Monthly recurrence | |
var recurrence = new MapiCalendarMonthlyRecurrencePattern | |
{ | |
Day = 15, | |
Period = 1, | |
PatternType = MapiCalendarRecurrencePatternType.Month, | |
EndType = MapiCalendarRecurrenceEndType.EndAfterDate, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=MONTHLY;BYMONTHDAY=15;INTERVAL=1"), | |
WeekStartDay = DayOfWeek.Monday, | |
EndDate = endByDate | |
}; | |
task.Recurrence = 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-.NET | |
var recurrence = new MapiCalendarMonthlyRecurrencePattern | |
{ | |
Day = 15, | |
Period = 1, | |
PatternType = MapiCalendarRecurrencePatternType.Month, | |
EndType = MapiCalendarRecurrenceEndType.NeverEnd, | |
WeekStartDay = DayOfWeek.Monday, | |
}; |
Работа с Ежегодными Повторами
Aspose.Email поддерживает создание ежегодных повторов с использованием MapiCalendarMonthlyRecurrencePattern. Установив свойство периода на 12, мы можем достичь шаблона ежегодного повтора. Можно использовать три разных типа окончания повторов календаря Mapi, включая EndAfterNOccurrences, EndAfterDate и NeverEnd. Этот раздел демонстрирует создание различных типов ежегодного повтора.
Ежегодные Повторы: Тип Повтора EndAfterNOccurrences
В этом типе повтора количество повторов устанавливается вместе с другой информацией следующим образом:
- Установите дату начала, окончания и выполнения.
- Создайте MapiTask.
- Установите состояние задачи на NotAssigned.
- Создайте объект ежемесячного повтора, задав такие свойства, как PatternType, Period, WeekStartDay, EndType и OccurenceCount.
- Установите свойство MapiTask.Recurrence на этот объект ежемесячного повтора для достижения ежегодного повтора.
- Сохраните это сообщение на диске.
Следующий фрагмент кода показывает, как создать задачу с типом окончания повтора EndAfterNOccurrence.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
TimeZone localZone = TimeZone.CurrentTimeZone; | |
TimeSpan ts = localZone.GetUtcOffset(DateTime.Now); | |
DateTime StartDate = new DateTime(2015, 7, 1); | |
StartDate = StartDate.Add(ts); | |
DateTime DueDate = new DateTime(2015, 7, 1); | |
DateTime endByDate = new DateTime(2020, 12, 31); | |
DueDate = DueDate.Add(ts); | |
endByDate = endByDate.Add(ts); | |
MapiTask task = new MapiTask("This is test task", "Sample Body", StartDate, DueDate); | |
task.State = MapiTaskState.NotAssigned; | |
// Set the Yearly recurrence | |
var recurrence = new MapiCalendarMonthlyRecurrencePattern | |
{ | |
Day = 15, | |
Period = 12, | |
PatternType = MapiCalendarRecurrencePatternType.Month, | |
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences, | |
OccurrenceCount = 3, | |
}; | |
task.Recurrence = 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-.NET | |
// Set the Yearly recurrence | |
var rec = new MapiCalendarMonthlyRecurrencePattern | |
{ | |
Day = 15, | |
Period = 12, | |
PatternType = MapiCalendarRecurrencePatternType.Month, | |
EndType = MapiCalendarRecurrenceEndType.EndAfterDate, | |
EndDate = endByDate, | |
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=7;INTERVAL=1"), | |
}; | |
task.Recurrence = rec; |
Ежегодные Повторы: Тип Повтора NeverEnd
Следующий фрагмент кода показывает, как установить тип окончания, используя MapiCalendarRecurrenceEndType.NeverEnd.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set the Yearly recurrence | |
var recurrence = new MapiCalendarMonthlyRecurrencePattern | |
{ | |
Day = 15, | |
Period = 12, | |
PatternType = MapiCalendarRecurrencePatternType.Month, | |
EndType = MapiCalendarRecurrenceEndType.NeverEnd, | |
}; |
Генерация Повтора из Правила Повтора
API Aspose.Email предоставляет возможность генерировать Шаблон Повтора из Правила Повтора (RRULE). Он анализирует информацию из RRULE в соответствии со спецификациями iCal RFC 5545 и генерирует шаблон повтора с использованием метода MapiCalendarRecurrencePatternFactory.FromString. Следующий фрагмент кода показывает, как сгенерировать шаблон повтора из правила повтора.
// 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(); | |
DateTime startDate = new DateTime(2015, 7, 16); | |
DateTime endDate = new DateTime(2015, 8, 1); | |
MapiCalendar app1 = new MapiCalendar("test location", "test summary", "test description", startDate, endDate); | |
app1.StartDate = startDate; | |
app1.EndDate = 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.Recurrence.RecurrencePattern = MapiCalendarRecurrencePatternFactory.FromString(pattern); |
Добавление Вложений к Повторяющимся Календарным Событиям
API Aspose.Email предоставляет возможность добавлять вложения к повторяющимся календарным событиям.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
DateTime startDate = new DateTime(2018, 7, 19).AddHours(12); | |
MapiCalendar calendar = new MapiCalendar("location1", "summary1", "description1", startDate, startDate.AddHours(1)); | |
MapiCalendarEventRecurrence recurrence = new MapiCalendarEventRecurrence(); | |
MapiCalendarRecurrencePattern pattern = recurrence.RecurrencePattern = new MapiCalendarDailyRecurrencePattern(); | |
pattern.PatternType = MapiCalendarRecurrencePatternType.Day; | |
pattern.Period = 1; | |
pattern.EndType = MapiCalendarRecurrenceEndType.NeverEnd; | |
DateTime exceptionDate = startDate.AddDays(3); | |
MapiCalendarExceptionInfo exception = new MapiCalendarExceptionInfo | |
{ | |
Location = "exceptionLoc", | |
Subject = "exceptionSubj", | |
Body = "exceptionBody", | |
OriginalStartDate = exceptionDate, | |
StartDateTime = exceptionDate, | |
EndDateTime = exceptionDate.AddHours(5), | |
Attachments = new MapiAttachmentCollection(calendar) | |
}; | |
exception.Attachments.Add("file.txt", Encoding.ASCII.GetBytes("hello, world!")); | |
pattern.Exceptions.Add(exception); | |
pattern.ModifiedInstanceDates.Add(exceptionDate); | |
pattern.DeletedInstanceDates.Add(exceptionDate); | |
calendar.Recurrence = recurrence; | |
using (var newPst = PersonalStorage.Create(dataDir + "AddAttachmentToMapiExceptionInfo.pst", FileFormatVersion.Unicode)) | |
{ | |
var newFolder = newPst.CreatePredefinedFolder("Calendar", StandardIpmFolder.Appointments); | |
newFolder.AddMapiMessageItem(calendar); | |
} |