I have 2 questions regarding recurrent event and modified occurences with attachments:
For example I create master recurrent event with attachments in Outlook and then change some occurrences, EWS gives different IDs for same attachments in master and in modified occurrences, but actually attachments are belongs to master, so if I have master with 20mb attachments and 10 modified occurrences (without their own attachments) then I’ll download about 300MB that is not correct as, it’s actually 1 attachment that belongs to master event. How can I recognize such duplication in events (as id is different each modified occurrence and master). I’m pretty sure that exchange doesn’t duplicates it.
Almost same question but when I create a PST with calendar and same master recurrent event with modified occurrences, how can I specify using your library that master has attachment and that this attachment will present in modified occurrences (as this normal Outlook / exchange behaviour - in the modified occurrences you still see master attachments) without attach this attachment to each modified occurrence, as this will dramatically increase PST size.
I have observed the questions shared. We are looking in to questions and will get back to you with feedback as soon as possible. An issue with ID EMAILNET-39691 has been created in our issue tracking system as investigation so that we may share feedback with you as soon as it will be available.
For 1) I’m not using your library to retrieve, but EWS directly, and the code is scattered across number of files, so I can’t provide any sample here
For 2) Actually I wanted an sample from you that I’ll be able to attach attachment to master recurrent event and without adding it to each modified occurrence. As Microsoft does in Outlook.
If you modify occurrences of recurrent event in the Outlook, even if you modify only the body and subject, in a modified occurrences a copy of the collection of master attachments is created in this occurrence. Such behavior increases the total size of the recurrent event. This is not the responsibility of Aspose.Email.
Aspose.Email implements a different logic. If you added an attachment to the master event, this attachment will be available in all occurrences, except for those in which you modifed (overloaded) the collection of attachments.
The code below demonstrates this logic. Here, the master attachment (common.txt) will be available in all occurrences except 1 in which your own attachment have been added.
If you want to see the master attachment (common.txt) in occurrence 1 , you should copy the master attachment to the attachment collection of this occurrence, but this will increase the overall recurrent event size.
DateTime startDate = DateTime.Today.AddHours(12);
var calendar = new MapiCalendar("location", "summary", "description", startDate, startDate.AddHours(1));
calendar.Attachments.Add("common.txt", new byte);
MapiCalendarEventRecurrence recurrence = new MapiCalendarEventRecurrence();
MapiCalendarRecurrencePattern pattern = recurrence.RecurrencePattern = new MapiCalendarDailyRecurrencePattern();
pattern.PatternType = MapiCalendarRecurrencePatternType.Day;
pattern.Period = 1;
pattern.EndType = MapiCalendarRecurrenceEndType.EndAfterNOccurrences;
pattern.OccurrenceCount = 10;
for (int i = 1; i < 3; i++)
DateTime exceptionDate = startDate.AddDays(i);
MapiCalendarExceptionInfo exception = new MapiCalendarExceptionInfo
Location = "ch location " + i,
Subject = "ch summary " + i,
OriginalStartDate = exceptionDate,
StartDateTime = exceptionDate,
EndDateTime = exceptionDate.AddHours(5),
Attachments = new MapiAttachmentCollection()
if (i == 1)
exception.Attachments.Add(i + ".txt", new byte[i]);
var exception4Date = startDate.AddDays(3);
Location = "ex location",
Subject = "ex summary",
Body = "ex body",
OriginalStartDate = exception4Date,
StartDateTime = exception4Date,
EndDateTime = exception4Date.AddHours(5)
calendar.Recurrence = recurrence;
using (var newPst = PersonalStorage.Create("calendar.pst", FileFormatVersion.Unicode))
var newFolder = newPst.CreatePredefinedFolder("Calendar", StandardIpmFolder.Appointments);