Yinelemeleri Yönetme
Günlük Tekrarlarla Çalışma
Aspose.Email, MapiCalendarDailyRecurrencePattern kullanarak günlük tekrarların oluşturulmasını destekler. EndAfterNOccurrences, EndAfterDate ve NeverEnd dahil olmak üzere üç farklı Mapi takvim tekrar bitiş türü kullanılabilir. Bu bölüm, farklı günlük tekrar desenlerinin oluşturulmasını gösterir.
Olay Sayısıyla Günlük Tekrarlar
Bu tekrarlama tipinde, tekrarlama sayısı aşağıdaki gibi diğer bilgilerle birlikte ayarlanır:
- Başlangıç, bitiş ve teslim tarihlerini ayarlayın.
- Bir MapiTask oluştur.
- Görev durumunu Atanmamış olarak ayarla.
- PatternType, Period, WeekStartDay, EndType ve OccurenceCount gibi özellikleri belirleyerek günlük yineleme nesnesini oluşturun.
- MapiTask.Recurrence özelliğini bu günlük yineleme nesnesine ayarlayın.
- Bu mesajı diske kaydedin.
Aşağıdaki kod parçacığı, yineleme bitiş türü EndAfterNOccurrence olan bir görev oluşturmayı gösterir.
// 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);
Aşağıdaki fonksiyon, iki tarih arasındaki etkinlik sayısını hesaplamak için kullanılabilir:
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;
}
Tekrar Sayısı Değerini Ayarlama
Aşağıdaki kod snippet’i, tekrar sayısı değerini nasıl ayarlayacağınızı gösterir.
// Set the Daily recurrence
var record = new MapiCalendarDailyRecurrencePattern
{
PatternType = MapiCalendarRecurrencePatternType.Day,
Period = 1,
WeekStartDay = DayOfWeek.Sunday,
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
OccurrenceCount = 5,
};
task.Recurrence = record;
Günlük Tekrarlamalar: EndAfterDate Bitiş Tipi
"End By" seçeneği, Mapi Görevinde GetOccurrenceCount() işlevi tarafından hesaplanan OccurrenceCount özelliği ayarlanarak sağlanır. Bu işlev, başlangıç tarihi, bitiş tarihi ve RRULE dizesini alır.
Günlük Tekrarlar: Her Gün Değerini Ayarlama
Aşağıdaki kod snippet’i, RRULE dizesinde period değerini 1 ve INTERVAL değerini 1 olarak ayarlamayı da gösterir.
// 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
};
Every Day değeri, aşağıdaki örnekte gösterildiği gibi uygun bir değere ayarlanabilir:
// Set the Daily recurrence
var record = new MapiCalendarDailyRecurrencePattern
{
PatternType = MapiCalendarRecurrencePatternType.Day,
Period = 2,
EndType = MapiCalendarRecurrenceEndType.EndAfterDate,
OccurrenceCount = GetOccurrenceCount(StartDate, endByDate, "FREQ=DAILY;INTERVAL=2"),
};
Günlük Tekrarlamalar: NeverEnd Bitiş Tipi
Bitiş türü, MapiCalendarRecurrenceEndType.NeverEnd kullanılarak ayarlanabilir. Periyot veya INTERVAL, aşağıdaki örnekte 1 gibi gerekli değere ayarlanabilir.
// Set the Daily recurrence
var record = new MapiCalendarDailyRecurrencePattern
{
PatternType = MapiCalendarRecurrencePatternType.Day,
Period = 1,
EndType = MapiCalendarRecurrenceEndType.NeverEnd,
};
Haftalık Tekrarlarla Çalışma
Aspose.Email, MapiCalendarWeeklyRecurrencePattern kullanarak haftalık tekrarların oluşturulması için zengin özellikler sunar. EndAfterNOccurrences, EndAfterDate ve NeverEnd dahil olmak üzere üç farklı Mapi takvim tekrar bitiş türü kullanılabilir. Bu bölüm, farklı haftalık tekrar desenlerinin oluşturulmasını gösterir.
Haftalık Tekrarlamalar: EndAfterNOccurrences Bitiş Tipi
Bu tekrarlama tipinde, tekrarlama sayısı aşağıdaki gibi diğer bilgilerle birlikte ayarlanır:
- Başlangıç, bitiş ve teslim tarihlerini ayarlayın.
- Bir MapiTask oluştur.
- Görev durumunu Atanmamış olarak ayarla.
- PatternType, Period, WeekStartDay, EndType ve OccurenceCount gibi özellikleri ayarlayarak haftalık tekrar nesnesi oluştur.
- MapiTask.Recurrence özelliğini bu haftalık tekrar nesnesine ayarla.
- Bu mesajı diske kaydedin.
Aşağıdaki kod parçacığı, tekrar bitiş türü EndAfterNOccurrence olan bir görev oluşturmanın nasıl yapılacağını gösterir.
// 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);
Aşağıdaki fonksiyon, iki tarih arasındaki etkinlik sayısını hesaplamak için kullanılabilir:
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;
}
Bir Haftada Birden Fazla Gün Seçme
Aşağıdaki kod snippet’i, bir hafta içinde birden fazla gün seçmeyi gösterir.
// 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"),
};
Bir Haftada Birden Fazla Gün Seçme ve Aralıkları Ayarlama
Aşağıdaki kod snippet’i, bir hafta içinde birden fazla gün seçmeyi ve aralıkları ayarlamayı gösterir.
// 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"),
};
Haftalık Tekrarlamalar: EndAfterDate Bitiş Tipi
"End By" seçeneği, Mapi Görevinde GetOccurrenceCount() işlevi tarafından hesaplanan OccurrenceCount özelliği ayarlanarak sağlanır. Bu işlev, başlangıç tarihi, bitiş tarihi ve RRULE dizesini alır.
Haftalık Tekrarlar: Her Gün Değerini Ayarlama
Aşağıdaki kod snippet’i, RRULE dizesinde period değerini 1 ve INTERVAL değerini 1 olarak ayarlamayı da gösterir.
// 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"),
};
Every Day değeri uygun bir değere ayarlanabilir ve birden fazla gün, aşağıdaki örnekte gösterildiği gibi seçilebilir:
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"),
};
Haftalık Tekrarlamalar: NeverEnd Bitiş Tipi
Bitiş türü, MapiCalendarRecurrenceEndType.NeverEnd kullanılarak ayarlanabilir. Periyot veya INTERVAL, aşağıdaki örnekte 1 gibi gerekli değere ayarlanabilir.
// 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"),
};
Aylık Tekrarlarla Çalışma
Aspose.Email, MapiCalendarMonthlyRecurrencePattern kullanarak aylık tekrarların oluşturulmasını destekler. EndAfterNOccurrences, EndAfterDate ve NeverEnd dahil olmak üzere üç farklı Mapi takvim tekrar bitiş türü kullanılabilir. Bu bölüm, farklı aylık tekrar desenlerinin oluşturulmasını gösterir.
Aylık Tekrarlamalar: EndAfterNOccurrences Bitiş Tipi
Bu tekrarlama tipinde, tekrarlama sayısı aşağıdaki gibi diğer bilgilerle birlikte ayarlanır:
- Başlangıç, bitiş ve teslim tarihlerini ayarlayın.
- Bir MapiTask oluştur.
- Görev durumunu Atanmamış olarak ayarla.
- PatternType, Period, WeekStartDay, EndType ve OccurenceCount gibi özellikleri ayarlayarak aylık tekrar nesnesi oluştur.
- MapiTask.Recurrence özelliğini bu aylık tekrar nesnesine ayarla.
- Bu mesajı diske kaydedin.
Aşağıdaki kod parçacığı, tekrar bitiş türü EndAfterNOccurrence olan bir görev oluşturmanın nasıl yapılacağını gösterir.
// 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);
Aşağıdaki fonksiyon, iki tarih arasındaki etkinlik sayısını hesaplamak için kullanılabilir:
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;
}
Sabit olay sayısını ayarla
Aşağıdaki kod parçacığı, sabit bir olay sayısını nasıl ayarlayacağınızı gösterir.
// Set the Monthly recurrence
var records = new MapiCalendarMonthlyRecurrencePattern
{
Day = 15,
Period = 1,
PatternType = MapiCalendarRecurrencePatternType.Month,
EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences,
OccurrenceCount = 5,
WeekStartDay = DayOfWeek.Monday
};
Aylık Tekrarlamalar: EndAfterDate Bitiş Tipi
"End By" seçeneği, Mapi Görevinde GetOccurrenceCount() işlevi tarafından hesaplanan OccurrenceCount özelliği ayarlanarak sağlanır. Bu işlev, başlangıç tarihi, bitiş tarihi ve RRULE dizesini alır. Aşağıdaki kod parçacığı, tarih aralığında her ayın 15’inde bir tekrar oluşturmanın nasıl yapılacağını gösterir.
// 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);
Aylık Tekrarlamalar: NeverEnd Bitiş Tipi
Aşağıdaki kod parçacığı, MapiCalendarRecurrenceEndType.NeverEnd kullanarak bitiş türünü nasıl ayarlayacağınızı gösterir.
var recurrence = new MapiCalendarMonthlyRecurrencePattern
{
Day = 15,
Period = 1,
PatternType = MapiCalendarRecurrencePatternType.Month,
EndType = MapiCalendarRecurrenceEndType.NeverEnd,
WeekStartDay = DayOfWeek.Monday,
};
Yıllık Tekrarlarla Çalışma
Aspose.Email, MapiCalendarMonthlyRecurrencePattern kullanarak yıllık tekrarların oluşturulmasını destekler. Periyot özelliğini 12 olarak ayarlayarak yıllık tekrar desenini elde edebiliriz. EndAfterNOccurrences, EndAfterDate ve NeverEnd dahil olmak üzere üç farklı Mapi takvim tekrar bitiş türü kullanılabilir. Bu bölüm, farklı yıllık tekrar desenlerinin oluşturulmasını gösterir.
Yıllık Tekrarlamalar: EndAfterNOccurrences Bitiş Tipi
Bu tekrarlama tipinde, tekrarlama sayısı aşağıdaki gibi diğer bilgilerle birlikte ayarlanır:
- Başlangıç, bitiş ve teslim tarihlerini ayarlayın.
- Bir MapiTask oluştur.
- Görev durumunu Atanmamış olarak ayarla.
- PatternType, Period, WeekStartDay, EndType ve OccurenceCount gibi özellikleri ayarlayarak aylık tekrar nesnesi oluştur.
- Yıllık tekrar elde etmek için MapiTask.Recurrence özelliğini bu aylık tekrar nesnesine ayarla.
- Bu mesajı diske kaydedin.
Aşağıdaki kod parçacığı, tekrar bitiş türü EndAfterNOccurrence olan bir görev oluşturmanın nasıl yapılacağını gösterir.
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);
Yıllık Tekrarlamalar: EndAfterDate Bitiş Tipi
"End By" seçeneği, Mapi Görevinde GetOccurrenceCount() işlevi tarafından hesaplanan OccurrenceCount özelliği ayarlanarak sağlanır. Bu işlev, başlangıç tarihi, bitiş tarihi ve RRULE dizesini alır. Aşağıdaki kod parçacığı, tarih aralığında her 7. ayın 15’inde bir tekrar oluşturmanın nasıl yapılacağını gösterir.
// 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;
Yıllık Tekrarlamalar: NeverEnd Bitiş Tipi
Aşağıdaki kod parçacığı, MapiCalendarRecurrenceEndType.NeverEnd kullanarak bitiş türünü nasıl ayarlayacağınızı gösterir.
// Set the Yearly recurrence
var recurrence = new MapiCalendarMonthlyRecurrencePattern
{
Day = 15,
Period = 12,
PatternType = MapiCalendarRecurrencePatternType.Month,
EndType = MapiCalendarRecurrenceEndType.NeverEnd,
};
Tekrarlama Kuralından Tekrarlama Oluşturma
Aspose.Email API, Tekrar Kuralı (RRULE) üzerinden Tekrar Deseni oluşturma yeteneği sağlar. RRULE’dan bilgileri RFC 5545 iCal spesifikasyonlarına göre ayrıştırır ve MapiCalendarRecurrencePatternFactory.FromString yöntemiyle tekrar desenini oluşturur. Aşağıdaki kod parçacığı, tekrar kuralından tekrar deseni oluşturmanın nasıl yapılacağını gösterir.
// 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);
Tekrarlayan Takvim Etkinliklerine Ek Ekle
Aspose.Email API tekrarlayan takvim etkinliklerine ek dosya ekleme yeteneği sağlar.
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);
}