public static RightsManagedMessageItem CreateFromInMemory(MessageItem item, MailboxSession session, StoreId destFolderId, OutboundConversionOptions options) { Util.ThrowOnNullArgument(item, "item"); Util.ThrowOnNullArgument(session, "session"); Util.ThrowOnNullArgument(destFolderId, "destFolderId"); Util.ThrowOnNullArgument(options, "options"); RightsManagedMessageItem.CheckSession(session); if (item.Session != null) { throw new InvalidOperationException("Item should be in-memory, not backed by store."); } RightsManagedMessageItem result; using (DisposeGuard disposeGuard = default(DisposeGuard)) { RightsManagedMessageItem rightsManagedMessageItem = RightsManagedMessageItem.Create(session, destFolderId, options); disposeGuard.Add <RightsManagedMessageItem>(rightsManagedMessageItem); RightsManagedMessageItem.CopyProtectableData(item, rightsManagedMessageItem.decodedItem); foreach (NativeStorePropertyDefinition nativeStorePropertyDefinition in item.AllNativeProperties) { if (!Body.BodyPropSet.Contains(nativeStorePropertyDefinition) && nativeStorePropertyDefinition != StoreObjectSchema.ContentClass) { object obj = item.TryGetProperty(nativeStorePropertyDefinition); if (!(obj is PropertyError)) { rightsManagedMessageItem[nativeStorePropertyDefinition] = obj; } else if (PropertyError.IsPropertyValueTooBig(obj)) { using (Stream stream = item.OpenPropertyStream(nativeStorePropertyDefinition, PropertyOpenMode.ReadOnly)) { using (Stream stream2 = rightsManagedMessageItem.OpenPropertyStream(nativeStorePropertyDefinition, PropertyOpenMode.Create)) { Util.StreamHandler.CopyStreamData(stream, stream2); } } } } } rightsManagedMessageItem.Recipients.CopyRecipientsFrom(item.Recipients); rightsManagedMessageItem.SaveFlags |= (PropertyBagSaveFlags.IgnoreMapiComputedErrors | PropertyBagSaveFlags.IgnoreUnresolvedHeaders); disposeGuard.Success(); result = rightsManagedMessageItem; } return(result); }
private RightsManagedMessageItem CreateReplyForwardInternal(MailboxSession session, StoreId parentFolderId, ReplyForwardConfiguration configuration, RightsManagedMessageItem.ReplyForwardCreationCall call) { Util.ThrowOnNullArgument(session, "session"); Util.ThrowOnNullArgument(parentFolderId, "parentFolderId"); Util.ThrowOnNullArgument(configuration, "configuration"); if ((configuration.ForwardCreationFlags & (ForwardCreationFlags.PreserveSender | ForwardCreationFlags.TreatAsMeetingMessage)) != ForwardCreationFlags.None) { throw new InvalidOperationException("Invalid forward creation flags used."); } RightsManagedMessageItem result; using (DisposeGuard disposeGuard = default(DisposeGuard)) { RightsManagedMessageItem rightsManagedMessageItem = RightsManagedMessageItem.Create(session, parentFolderId, this.options); disposeGuard.Add <RightsManagedMessageItem>(rightsManagedMessageItem); call(this, rightsManagedMessageItem, configuration); rightsManagedMessageItem.CopyLicenseDataFrom(this); disposeGuard.Success(); result = rightsManagedMessageItem; } return(result); }