private MessageItem GetMessageItem(bool existingMessage) { MessageItem messageItem; if (existingMessage) { ExTraceGlobals.MailTracer.TraceDebug((long)this.GetHashCode(), "ItemId set in the request. Existing message"); messageItem = base.GetRequestItem <MessageItem>(new PropertyDefinition[0]); if (base.UserContext.IsIrmEnabled && !Utilities.IrmDecryptIfRestricted(messageItem, base.UserContext, true) && this.ApplyingIrmCompliance()) { messageItem = RightsManagedMessageItem.Create(messageItem, Utilities.CreateOutboundConversionOptions(base.UserContext)); } } else { ExTraceGlobals.MailTracer.TraceDebug((long)this.GetHashCode(), "ItemId wasn't set in the request. Creating new message in the drafts folder."); messageItem = this.CreateNewMessageItem(); messageItem[ItemSchema.ConversationIndexTracking] = true; if (Globals.ArePerfCountersEnabled) { OwaSingleCounters.ItemsCreated.Increment(); } } return(messageItem); }
// Token: 0x06001567 RID: 5479 RVA: 0x0007DF30 File Offset: 0x0007C130 protected MessageItem GetRightsManagedReplyForward(MessageItem smartReply, SendMailBase.IrmAction irmAction, RmsTemplate rmsTemplate) { if (smartReply == null) { throw new ArgumentNullException("smartReply"); } if (irmAction != SendMailBase.IrmAction.CreateNewPublishingLicense && irmAction != SendMailBase.IrmAction.CreateNewPublishingLicenseInlineOriginalBody && irmAction != SendMailBase.IrmAction.CreateNewPublishingLicenseAttachOriginalMessage) { throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Unexpected irmAction value: {0}", new object[] { irmAction })); } RightsManagedMessageItem rightsManagedMessageItem = smartReply as RightsManagedMessageItem; if (irmAction == SendMailBase.IrmAction.CreateNewPublishingLicenseInlineOriginalBody) { rightsManagedMessageItem.SetRestriction(rmsTemplate); } else if (irmAction == SendMailBase.IrmAction.CreateNewPublishingLicense || irmAction == SendMailBase.IrmAction.CreateNewPublishingLicenseAttachOriginalMessage) { rightsManagedMessageItem = RightsManagedMessageItem.Create(smartReply, AirSyncUtility.GetOutboundConversionOptions()); rightsManagedMessageItem.SetRestriction(rmsTemplate); rightsManagedMessageItem.Sender = new Participant(base.MailboxSession.MailboxOwner); } return(rightsManagedMessageItem); }
private MessageItem CreateNewMessageItem() { MessageItem result; if (this.ApplyingIrmCompliance()) { result = RightsManagedMessageItem.Create(base.UserContext.MailboxSession, base.UserContext.DraftsFolderId, Utilities.CreateOutboundConversionOptions(base.UserContext)); } else { result = MessageItem.Create(base.UserContext.MailboxSession, base.UserContext.DraftsFolderId); } return(result); }
// Token: 0x06001575 RID: 5493 RVA: 0x0007E438 File Offset: 0x0007C638 internal override Command.ExecutionState ExecuteCommand() { MessageItem messageItem = null; bool flag = false; DeleteItemFlags deletedItemFlag = DeleteItemFlags.HardDelete; try { base.ValidateBody(); StoreObjectId defaultFolderId = base.MailboxSession.GetDefaultFolderId(DefaultFolderType.Drafts); messageItem = MessageItem.Create(base.MailboxSession, defaultFolderId); base.ParseMimeToMessage(messageItem); Guid guid; if (base.IsIrmOperation(out guid)) { RmsTemplate rmsTemplate = RmsTemplateReaderCache.LookupRmsTemplate(base.User.OrganizationId, guid); if (rmsTemplate == null) { AirSyncDiagnostics.TraceError <Guid>(ExTraceGlobals.RequestsTracer, this, "Template {0} not found in cache", guid); throw new AirSyncPermanentException(StatusCode.IRM_InvalidTemplateID, false) { ErrorStringForProtocolLogger = "smcEInvalidTemplateID" }; } messageItem = RightsManagedMessageItem.Create(messageItem, AirSyncUtility.GetOutboundConversionOptions()); RightsManagedMessageItem rightsManagedMessageItem = messageItem as RightsManagedMessageItem; rightsManagedMessageItem.SetRestriction(rmsTemplate); rightsManagedMessageItem.Sender = new Participant(base.MailboxSession.MailboxOwner); } Command.CurrentCommand.ProtocolLogger.SetValue(ProtocolLoggerData.ClassName, messageItem.ClassName); if (!GlobalSettings.OnlyOrganizersCanSendMeetingChanges || !this.IsMeetingRelatedMessage(messageItem)) { base.SendMessage(messageItem); flag = true; } else { bool flag2 = this.CanSendMessage(messageItem); if (GlobalSettings.GetGoidFromCalendarItemForMeetingResponse && base.Version < 160 && this.IsResponseMessageToSingleMeeting(messageItem)) { GlobalObjectId goidFromItem = this.GetGoidFromItem(messageItem); try { ResponseType valueOrDefault = messageItem.GetValueOrDefault <ResponseType>(MeetingResponseSchema.ResponseType); DefaultFolderType defaultFolderType = (valueOrDefault == ResponseType.Decline) ? DefaultFolderType.DeletedItems : DefaultFolderType.Calendar; List <PropertyBag> list = this.QueryRelatedCalendarItems(defaultFolderType, goidFromItem); if (list.Count == 0 && valueOrDefault == ResponseType.Decline) { list = this.QueryRelatedCalendarItems(DefaultFolderType.Calendar, goidFromItem); if (list.Count == 0) { list = this.QueryRelatedCalendarItems(DefaultFolderType.DeletedItems, goidFromItem); } } this.FindAndSetMessageGoid(list, messageItem, goidFromItem); } catch (Exception ex) { AirSyncDiagnostics.TraceError <Exception>(ExTraceGlobals.RequestsTracer, this, "GetRelatedCalendarItemGoid threw exception {0}", ex); AirSyncDiagnostics.SendInMemoryTraceWatson(ex); } } if (flag2) { base.SendMessage(messageItem); flag = true; } else { AirSyncDiagnostics.TraceDebug <Participant>(ExTraceGlobals.RequestsTracer, this, "Attempt to send meeting cancellation by attendee. Sender {0}", messageItem.Sender); messageItem.ClassName = "IPM.Note"; messageItem.Save(SaveMode.NoConflictResolution); deletedItemFlag = DeleteItemFlags.MoveToDeletedItems; Command.CurrentCommand.ProtocolLogger.SetValue(ProtocolLoggerData.SkipSend, true.ToString()); } } } finally { if (messageItem != null) { if (!flag) { base.DeleteMessage(messageItem, deletedItemFlag); } messageItem.Dispose(); } } return(Command.ExecutionState.Complete); }