protected override void CopySingleMessage(MessageRec messageRec, IFolderProxy folderProxy, PropTag[] propTagsToExclude, PropTag[] excludeProps) { ExecutionContext.Create(new DataContext[] { new OperationDataContext("EasSourceMailbox.CopySingleMessage", OperationType.None), new EntryIDsDataContext(messageRec.EntryId) }).Execute(delegate { Add add; if (this.EasFolderCache.TryGetValue(messageRec.FolderId, out add)) { EasFolderType easFolderType = add.GetEasFolderType(); if (EasFolder.IsCalendarFolder(easFolderType)) { Properties calendarItemProperties = this.ReadCalendarItem(messageRec); EasSourceMailbox.CopyCalendarItem(messageRec, calendarItemProperties, folderProxy); return; } if (EasFolder.IsContactFolder(easFolderType)) { EasSourceMailbox.CopyContactItem(messageRec, folderProxy); return; } SyncEmailUtils.CopyMimeStream(this, messageRec, folderProxy); } }); }
private byte[] CreateItem(byte[] itemEntryId, byte[] folderEntryId, Func <string, string, string, byte[]> executeSync) { base.CheckDisposed(); Add add; if (!base.EasFolderCache.TryGetValue(folderEntryId, out add)) { MrsTracer.Provider.Warning("Source folder {0} doesn't exist", new object[] { TraceUtils.DumpBytes(folderEntryId) }); throw new EasObjectNotFoundException(EasMailbox.GetStringId(folderEntryId)); } string arg = EasSourceMailbox.ClientIdFromItemId(itemEntryId); string syncKey = base.GetPersistedSyncState(folderEntryId).SyncKey; return(executeSync(arg, syncKey, add.ServerId)); }
void IReplayProvider.Send(SendAction action) { MrsTracer.Provider.Function("EasSourceMailbox.Send({0})", new object[] { action }); string mimeString = null; using (MemoryStream memoryStream = new MemoryStream(action.Data)) { using (StreamReader streamReader = new StreamReader(memoryStream, Encoding.UTF8)) { mimeString = streamReader.ReadToEnd(); } } string clientId = EasSourceMailbox.ClientIdFromItemId(action.ItemId); base.EasConnectionWrapper.SendMail(clientId, mimeString); }