コード例 #1
0
        // Token: 0x06002476 RID: 9334 RVA: 0x000D3DEC File Offset: 0x000D1FEC
        internal void SendNotificationMessage()
        {
            string text = this.CapturePrintMeetingMarkup();

            text = string.Format("<div style=\"font-size: 70%; font-family:'{0}'\">{1}</div><br>{2}", Utilities.GetDefaultFontName(), LocalizedStrings.GetHtmlEncoded(PrincipalNotificationMessage.NotificationMessages[(int)this.messageType]), text);
            using (MessageItem messageItem = MessageItem.Create(this.userContext.MailboxSession, this.userContext.DraftsFolderId))
            {
                messageItem.Subject = LocalizedStrings.GetNonEncoded(PrincipalNotificationMessage.NotificationMessageTitles[(int)this.titleType]);
                BodyConversionUtilities.SetBody(messageItem, text, Markup.Html, StoreObjectType.Message, this.userContext);
                messageItem[ItemSchema.ConversationIndexTracking] = true;
                IExchangePrincipal folderOwnerExchangePrincipal = Utilities.GetFolderOwnerExchangePrincipal(this.folderId, this.userContext);
                Participant        participant = new Participant(folderOwnerExchangePrincipal);
                messageItem.Recipients.Add(participant, RecipientItemType.To);
                try
                {
                    messageItem.SendWithoutSavingMessage();
                }
                catch
                {
                    ExTraceGlobals.MailTracer.TraceDebug((long)this.GetHashCode(), "Error sending principal notification message.");
                    throw;
                }
            }
            if (Globals.ArePerfCountersEnabled)
            {
                OwaSingleCounters.ItemsCreated.Increment();
                OwaSingleCounters.MessagesSent.Increment();
            }
        }
コード例 #2
0
        public static Stream ConvertItemToMime(StoreObject xsoItem)
        {
            Item item = xsoItem as Item;

            if (item == null)
            {
                throw new UnexpectedTypeException("Item", xsoItem);
            }
            OutboundConversionOptions outboundConversionOptions = AirSyncUtility.GetOutboundConversionOptions();
            PolicyData policyData = ADNotificationManager.GetPolicyData(Command.CurrentCommand.User);

            if (policyData != null && !policyData.AttachmentsEnabled)
            {
                outboundConversionOptions.FilterAttachmentHandler = ((Item item1, Attachment attachment) => false);
            }
            item.Load(StoreObjectSchema.ContentConversionProperties);
            AirSyncStream airSyncStream = new AirSyncStream();

            try
            {
                if (BodyConversionUtilities.IsMessageRestrictedAndDecoded(item))
                {
                    ItemConversion.ConvertItemToMime(((RightsManagedMessageItem)item).DecodedItem, airSyncStream, outboundConversionOptions);
                }
                else
                {
                    ItemConversion.ConvertItemToMime(item, airSyncStream, outboundConversionOptions);
                }
            }
            catch (ConversionFailedException innerException)
            {
                throw new ConversionException(string.Format(CultureInfo.InvariantCulture, "MIME conversion failed for Item {0}", new object[]
                {
                    item
                }), innerException);
            }
            return(airSyncStream);
        }
コード例 #3
0
		// Token: 0x060002EB RID: 747 RVA: 0x00019444 File Offset: 0x00017644
		private void CommitAndLoad()
		{
			this.Load();
			if (Utilities.IsPostRequest(this.request) && !string.IsNullOrEmpty(base.Command))
			{
				if (base.Command.Equals("ClrMRR", StringComparison.Ordinal))
				{
					AutoCompleteCache autoCompleteCache = AutoCompleteCache.TryGetCache(OwaContext.Current.UserContext);
					if (autoCompleteCache != null)
					{
						autoCompleteCache.ClearCache();
						autoCompleteCache.Commit(false);
					}
					this.isClearMrrRequest = true;
				}
				string formParameter = Utilities.GetFormParameter(this.request, "selRwCnt");
				if (string.IsNullOrEmpty(formParameter) || !int.TryParse(formParameter, out this.displayItemsPerPage))
				{
					throw new OwaInvalidRequestException("Row count must be a valid number");
				}
				string formParameter2 = Utilities.GetFormParameter(this.request, "selNxt");
				int num;
				if (string.IsNullOrEmpty(formParameter2) || !int.TryParse(formParameter2, out num) || num < 0 || num > 2)
				{
					throw new OwaInvalidRequestException("Next selection must be a valid number");
				}
				this.nextSelection = (NextSelectionDirection)num;
				if (this.userContext.IsFeatureEnabled(Feature.Signature))
				{
					this.autoAddSignature = (Utilities.GetFormParameter(this.request, "chkAddSg", false) != null);
					this.signatureText = Utilities.GetFormParameter(this.request, "txtSg", false);
				}
				this.emptyDeletedItemsOnLogoff = (Utilities.GetFormParameter(this.request, "chkEmDel", false) != null);
				string formParameter3 = Utilities.GetFormParameter(this.request, "rdRcpt", false);
				if (!string.IsNullOrEmpty(formParameter3))
				{
					this.readReceiptResponse = (ReadReceiptResponse)int.Parse(formParameter3);
				}
				this.addRecentRecipientsToMrr = (Utilities.GetFormParameter(this.request, "chkAddMRR", false) != null);
				if (this.userContext.IsFeatureEnabled(Feature.Contacts))
				{
					string formParameter4 = Utilities.GetFormParameter(this.request, "anrFst");
					this.checkNameInContactsFirst = (!string.IsNullOrEmpty(formParameter4) && formParameter4 == "1");
				}
				if (!this.isClearMrrRequest)
				{
					bool flag = false;
					if (this.displayItemsPerPage != this.userContext.UserOptions.BasicViewRowCount)
					{
						this.userContext.UserOptions.BasicViewRowCount = this.displayItemsPerPage;
						flag = true;
					}
					if (this.nextSelection != this.userContext.UserOptions.NextSelection)
					{
						this.userContext.UserOptions.NextSelection = this.nextSelection;
						flag = true;
					}
					if (this.userContext.IsFeatureEnabled(Feature.Signature))
					{
						if (this.autoAddSignature != this.userContext.UserOptions.AutoAddSignature)
						{
							this.userContext.UserOptions.AutoAddSignature = this.autoAddSignature;
							flag = true;
						}
						if (!Utilities.WhiteSpaceOnlyOrNullEmpty(this.signatureText) && (Utilities.WhiteSpaceOnlyOrNullEmpty(this.userContext.UserOptions.SignatureText) || !string.IsNullOrEmpty(Utilities.GetFormParameter(this.request, "chkRplSg", false))))
						{
							this.userContext.UserOptions.SignatureText = this.signatureText;
							this.signatureHtml = BodyConversionUtilities.ConvertTextToHtml(this.signatureText);
							this.userContext.UserOptions.SignatureHtml = this.signatureHtml;
							flag = true;
						}
					}
					if (this.userContext.UserOptions.EmptyDeletedItemsOnLogoff != this.emptyDeletedItemsOnLogoff)
					{
						this.userContext.UserOptions.EmptyDeletedItemsOnLogoff = this.emptyDeletedItemsOnLogoff;
						flag = true;
					}
					if (this.userContext.UserOptions.ReadReceipt != this.readReceiptResponse)
					{
						this.userContext.UserOptions.ReadReceipt = this.readReceiptResponse;
						flag = true;
					}
					if (this.userContext.UserOptions.AddRecipientsToAutoCompleteCache != this.addRecentRecipientsToMrr)
					{
						this.userContext.UserOptions.AddRecipientsToAutoCompleteCache = this.addRecentRecipientsToMrr;
						flag = true;
					}
					if (this.userContext.IsFeatureEnabled(Feature.Contacts) && this.userContext.UserOptions.CheckNameInContactsFirst != this.checkNameInContactsFirst)
					{
						this.userContext.UserOptions.CheckNameInContactsFirst = this.checkNameInContactsFirst;
						flag = true;
					}
					if (flag)
					{
						try
						{
							this.userContext.UserOptions.CommitChanges();
							base.SetSavedSuccessfully(true);
						}
						catch (StoragePermanentException)
						{
							base.SetSavedSuccessfully(false);
						}
						catch (StorageTransientException)
						{
							base.SetSavedSuccessfully(false);
						}
					}
				}
			}
		}
コード例 #4
0
        private Command.ExecutionState ForwardUsingXso(StoreObjectId smartId)
        {
            Item             smartItem        = base.GetSmartItem(smartId);
            MessageItem      messageItem      = null;
            VersionedId      versionedId      = null;
            MessageItem      messageItem2     = null;
            CalendarItemBase calendarItemBase = null;

            try
            {
                StoreObjectId defaultFolderId = base.MailboxSession.GetDefaultFolderId(DefaultFolderType.Drafts);
                messageItem = MessageItem.Create(base.MailboxSession, defaultFolderId);
                base.ParseMimeToMessage(messageItem);
                messageItem.Save(SaveMode.NoConflictResolution);
                messageItem.Load();
                versionedId = messageItem.Id;
                messageItem.Dispose();
                messageItem = MessageItem.Bind(base.MailboxSession, versionedId);
                RmsTemplate            rmsTemplate = null;
                SendMailBase.IrmAction irmAction   = base.GetIrmAction(delegate(RightsManagedMessageItem originalRightsManagedItem)
                {
                    if (originalRightsManagedItem == null)
                    {
                        throw new ArgumentNullException("originalRightsManagedItem");
                    }
                    if (!originalRightsManagedItem.UsageRights.IsUsageRightGranted(ContentRight.Forward))
                    {
                        throw new AirSyncPermanentException(StatusCode.IRM_OperationNotPermitted, false)
                        {
                            ErrorStringForProtocolLogger = "sfcEOperationNotPermitted"
                        };
                    }
                }, ref smartItem, out rmsTemplate);
                Microsoft.Exchange.Data.Storage.BodyFormat bodyFormat = messageItem.Body.Format;
                MeetingMessage meetingMessage = smartItem as MeetingMessage;
                string         text;
                if ((base.ReplaceMime || irmAction == SendMailBase.IrmAction.CreateNewPublishingLicenseAttachOriginalMessage) && meetingMessage != null && !meetingMessage.IsDelegated() && (meetingMessage is MeetingRequest || meetingMessage is MeetingCancellation))
                {
                    text = string.Empty;
                }
                else
                {
                    using (TextReader textReader = messageItem.Body.OpenTextReader(bodyFormat))
                    {
                        text = textReader.ReadToEnd();
                    }
                    Body body = (irmAction == SendMailBase.IrmAction.CreateNewPublishingLicenseInlineOriginalBody || irmAction == SendMailBase.IrmAction.ReusePublishingLicenseInlineOriginalBody) ? ((RightsManagedMessageItem)smartItem).ProtectedBody : smartItem.Body;
                    if (body.Format == Microsoft.Exchange.Data.Storage.BodyFormat.TextHtml)
                    {
                        if (bodyFormat == Microsoft.Exchange.Data.Storage.BodyFormat.TextPlain)
                        {
                            XmlDocument  xmlDocument  = new SafeXmlDocument();
                            XmlNode      xmlNode      = xmlDocument.CreateElement("PRE");
                            XmlAttribute xmlAttribute = xmlDocument.CreateAttribute("STYLE");
                            xmlAttribute.Value = "word-wrap:break-word; font-size:10.0pt; font-family:Tahoma; color:black";
                            xmlNode.Attributes.Append(xmlAttribute);
                            xmlNode.InnerText = text;
                            text = xmlNode.OuterXml;
                        }
                        bodyFormat = Microsoft.Exchange.Data.Storage.BodyFormat.TextHtml;
                    }
                }
                ReplyForwardConfiguration replyForwardConfiguration = new ReplyForwardConfiguration(bodyFormat);
                replyForwardConfiguration.ConversionOptionsForSmime = AirSyncUtility.GetInboundConversionOptions();
                replyForwardConfiguration.AddBodyPrefix(text);
                if (base.Version >= 120)
                {
                    if (smartItem is MessageItem)
                    {
                        messageItem2 = ((MessageItem)smartItem).CreateForward(defaultFolderId, replyForwardConfiguration);
                        if (irmAction == SendMailBase.IrmAction.CreateNewPublishingLicense || irmAction == SendMailBase.IrmAction.CreateNewPublishingLicenseInlineOriginalBody || irmAction == SendMailBase.IrmAction.CreateNewPublishingLicenseAttachOriginalMessage)
                        {
                            messageItem2 = base.GetRightsManagedReplyForward(messageItem2, irmAction, rmsTemplate);
                        }
                    }
                    else if (smartItem is CalendarItem)
                    {
                        CalendarItem calendarItem = (CalendarItem)smartItem;
                        calendarItemBase = base.GetCalendarItemBaseToReplyOrForward(calendarItem);
                        messageItem2     = calendarItemBase.CreateForward(defaultFolderId, replyForwardConfiguration);
                        if (!calendarItem.IsMeeting)
                        {
                            BodyConversionUtilities.CopyBody(messageItem, messageItem2);
                        }
                    }
                    if (messageItem2 == null)
                    {
                        base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "ForwardFailed");
                        throw new AirSyncPermanentException(HttpStatusCode.InternalServerError, StatusCode.MailSubmissionFailed, null, false);
                    }
                    if (base.ReplaceMime || irmAction == SendMailBase.IrmAction.CreateNewPublishingLicenseAttachOriginalMessage)
                    {
                        RightsManagedMessageItem rightsManagedMessageItem = messageItem2 as RightsManagedMessageItem;
                        if (rightsManagedMessageItem != null)
                        {
                            rightsManagedMessageItem.ProtectedAttachmentCollection.RemoveAll();
                        }
                        else
                        {
                            messageItem2.AttachmentCollection.RemoveAll();
                        }
                    }
                    base.CopyMessageContents(messageItem, messageItem2, false, (irmAction == SendMailBase.IrmAction.CreateNewPublishingLicenseAttachOriginalMessage) ? smartItem : null);
                    base.SendMessage(messageItem2);
                }
                else if (smartItem is MessageItem)
                {
                    using (ItemAttachment itemAttachment = messageItem.AttachmentCollection.AddExistingItem(smartItem))
                    {
                        MessageItem messageItem3 = (MessageItem)smartItem;
                        itemAttachment.FileName = messageItem3.Subject + itemAttachment.FileExtension;
                        itemAttachment.Save();
                    }
                    base.SendMessage(messageItem);
                }
                else if (smartItem is CalendarItem)
                {
                    CalendarItem calendarItem2 = (CalendarItem)smartItem;
                    messageItem2 = calendarItem2.CreateForward(defaultFolderId, replyForwardConfiguration);
                    if (messageItem2 == null)
                    {
                        base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "ForwardFailed2");
                        throw new AirSyncPermanentException(HttpStatusCode.InternalServerError, StatusCode.MailSubmissionFailed, null, false);
                    }
                    if (!calendarItem2.IsMeeting)
                    {
                        BodyConversionUtilities.CopyBody(messageItem, messageItem2);
                    }
                    base.CopyMessageContents(messageItem, messageItem2, false, null);
                    base.SendMessage(messageItem2);
                }
            }
            finally
            {
                if (messageItem != null)
                {
                    if (versionedId != null)
                    {
                        base.MailboxSession.Delete(DeleteItemFlags.HardDelete, new StoreId[]
                        {
                            versionedId
                        });
                    }
                    messageItem.Dispose();
                }
                if (smartItem != null)
                {
                    smartItem.Dispose();
                }
                if (messageItem2 != null)
                {
                    messageItem2.Dispose();
                }
                if (calendarItemBase != null)
                {
                    calendarItemBase.Dispose();
                }
            }
            return(Command.ExecutionState.Complete);
        }
コード例 #5
0
        private void CommitAndLoad()
        {
            this.oofSettings = UserOofSettings.GetUserOofSettings(this.userContext.MailboxSession);
            this.Load();
            bool flag = false;

            if (Utilities.IsPostRequest(this.request) && !string.IsNullOrEmpty(base.Command))
            {
                string formParameter = Utilities.GetFormParameter(this.request, "rdoOof", false);
                if (!string.IsNullOrEmpty(formParameter))
                {
                    bool flag2 = formParameter == 1.ToString();
                    bool flag3 = Utilities.GetFormParameter(this.request, "chkTmd", false) != null;
                    if (!flag2)
                    {
                        if (this.oofSettings.OofState != OofState.Disabled)
                        {
                            this.oofSettings.OofState = OofState.Disabled;
                            flag = true;
                        }
                    }
                    else if (flag3)
                    {
                        if (this.oofSettings.OofState != OofState.Scheduled)
                        {
                            this.oofSettings.OofState = OofState.Scheduled;
                            flag = true;
                        }
                        string formParameter2 = Utilities.GetFormParameter(this.request, "selSM", false);
                        string formParameter3 = Utilities.GetFormParameter(this.request, "selSD", false);
                        string formParameter4 = Utilities.GetFormParameter(this.request, "selSY", false);
                        string formParameter5 = Utilities.GetFormParameter(this.request, "selST", false);
                        string formParameter6 = Utilities.GetFormParameter(this.request, "selEM", false);
                        string formParameter7 = Utilities.GetFormParameter(this.request, "selED", false);
                        string formParameter8 = Utilities.GetFormParameter(this.request, "selEY", false);
                        string formParameter9 = Utilities.GetFormParameter(this.request, "selET", false);
                        if (string.IsNullOrEmpty(formParameter2) || string.IsNullOrEmpty(formParameter3) || string.IsNullOrEmpty(formParameter4) || string.IsNullOrEmpty(formParameter5) || string.IsNullOrEmpty(formParameter6) || string.IsNullOrEmpty(formParameter7) || string.IsNullOrEmpty(formParameter8) || string.IsNullOrEmpty(formParameter9))
                        {
                            base.SetInfobarMessage(string.Format(LocalizedStrings.GetNonEncoded(1140546334), this.userContext.UserOptions.DateFormat), InfobarMessageType.Error);
                            return;
                        }
                        int num = int.Parse(formParameter3);
                        if (num > ExDateTime.DaysInMonth(int.Parse(formParameter4), int.Parse(formParameter2)))
                        {
                            num = ExDateTime.DaysInMonth(int.Parse(formParameter4), int.Parse(formParameter2));
                        }
                        ExDateTime t = new ExDateTime(this.userContext.TimeZone, int.Parse(formParameter4), int.Parse(formParameter2), num);
                        num = int.Parse(formParameter7);
                        if (num > ExDateTime.DaysInMonth(int.Parse(formParameter8), int.Parse(formParameter6)))
                        {
                            num = ExDateTime.DaysInMonth(int.Parse(formParameter8), int.Parse(formParameter6));
                        }
                        ExDateTime t2 = new ExDateTime(this.userContext.TimeZone, int.Parse(formParameter8), int.Parse(formParameter6), num);
                        t  = t.AddHours((double)int.Parse(formParameter5));
                        t2 = t2.AddHours((double)int.Parse(formParameter9));
                        if (t > t2)
                        {
                            base.SetInfobarMessage(LocalizedStrings.GetNonEncoded(107113300), InfobarMessageType.Error);
                            this.isInvalidDuration = true;
                        }
                        if (this.oofSettings.Duration == null)
                        {
                            this.oofSettings.Duration = new Duration();
                        }
                        if (this.oofSettings.Duration.StartTime != (DateTime)t.ToUtc())
                        {
                            this.oofSettings.Duration.StartTime = (DateTime)t.ToUtc();
                            flag = true;
                        }
                        if (this.oofSettings.Duration.EndTime != (DateTime)t2.ToUtc())
                        {
                            this.oofSettings.Duration.EndTime = (DateTime)t2.ToUtc();
                            flag = true;
                        }
                    }
                    else if (this.oofSettings.OofState != OofState.Enabled)
                    {
                        this.oofSettings.OofState = OofState.Enabled;
                        flag = true;
                    }
                    string formParameter10 = Utilities.GetFormParameter(this.request, "txtInt", false);
                    string formParameter11 = Utilities.GetFormParameter(this.request, "chkInt", false);
                    if (((formParameter11 == null && string.IsNullOrEmpty(this.oofToInternal)) || !string.IsNullOrEmpty(formParameter11)) && !Utilities.WhiteSpaceOnlyOrNullEmpty(formParameter10))
                    {
                        this.oofSettings.InternalReply.Message = BodyConversionUtilities.ConvertTextToHtml(formParameter10);
                        flag = true;
                    }
                    string formParameter12 = Utilities.GetFormParameter(this.request, "txtExt", false);
                    string formParameter13 = Utilities.GetFormParameter(this.request, "chkExt", false);
                    if (((formParameter13 == null && string.IsNullOrEmpty(this.oofToExternal)) || !string.IsNullOrEmpty(formParameter13)) && !Utilities.WhiteSpaceOnlyOrNullEmpty(formParameter12))
                    {
                        this.oofSettings.ExternalReply.Message = BodyConversionUtilities.ConvertTextToHtml(formParameter12);
                        flag = true;
                    }
                    if (Utilities.GetFormParameter(this.request, "chkExtSnd", false) != null)
                    {
                        string formParameter14 = Utilities.GetFormParameter(this.request, "rdoAll", false);
                        if (!string.IsNullOrEmpty(formParameter14))
                        {
                            if (formParameter14 == 3.ToString())
                            {
                                if (this.oofSettings.ExternalAudience != ExternalAudience.All)
                                {
                                    this.oofSettings.ExternalAudience = ExternalAudience.All;
                                    flag = true;
                                }
                            }
                            else if (this.oofSettings.ExternalAudience != ExternalAudience.Known)
                            {
                                this.oofSettings.ExternalAudience = ExternalAudience.Known;
                                flag = true;
                            }
                        }
                    }
                    else if (this.oofSettings.ExternalAudience != ExternalAudience.None)
                    {
                        this.oofSettings.ExternalAudience = ExternalAudience.None;
                        flag = true;
                    }
                    if (flag)
                    {
                        try
                        {
                            this.oofSettings.Save(this.userContext.MailboxSession);
                            base.SetSavedSuccessfully(true);
                        }
                        catch (InvalidScheduledOofDuration)
                        {
                            base.SetInfobarMessage(LocalizedStrings.GetNonEncoded(-561991348), InfobarMessageType.Error);
                            this.isInvalidDuration = true;
                        }
                        this.Load();
                    }
                }
            }
        }
コード例 #6
0
        internal static string GetAttachment(MailboxSession mailboxSession, StoreObjectId itemId, string attachmentId, Stream outStream, int offset, int count, Unlimited <ByteQuantifiedSize> maxAttachmentSize, bool rightsManagementSupport, out int total)
        {
            string result;

            using (Item item = Item.Bind(mailboxSession, itemId))
            {
                if ("DRMLicense".Equals(attachmentId, StringComparison.OrdinalIgnoreCase))
                {
                    total  = AttachmentHelper.WriteDrmLicenseToStream(item, outStream, offset, count, maxAttachmentSize);
                    result = "application/x-microsoft-rpmsg-message-license";
                }
                else
                {
                    if (rightsManagementSupport)
                    {
                        Command.CurrentCommand.DecodeIrmMessage(item, true);
                    }
                    Attachment attachment = null;
                    try
                    {
                        AttachmentCollection attachmentCollection;
                        if (BodyConversionUtilities.IsMessageRestrictedAndDecoded(item))
                        {
                            attachmentCollection = ((RightsManagedMessageItem)item).ProtectedAttachmentCollection;
                        }
                        else
                        {
                            attachmentCollection = item.AttachmentCollection;
                        }
                        if (attachmentId.Length > 8)
                        {
                            AttachmentId attachmentId2 = EntitySyncItemId.GetAttachmentId(attachmentId);
                            if (attachmentId2 != null)
                            {
                                attachment = attachmentCollection.Open(attachmentId2);
                            }
                        }
                        if (attachment == null)
                        {
                            int num;
                            if (!int.TryParse(attachmentId, NumberStyles.None, CultureInfo.InvariantCulture, out num) || num < 0)
                            {
                                throw new FormatException("Invalid Attachment Index format: " + attachmentId.ToString(CultureInfo.InvariantCulture));
                            }
                            IList <AttachmentHandle> handles = attachmentCollection.GetHandles();
                            if (num < handles.Count)
                            {
                                attachment = attachmentCollection.Open(handles[num]);
                            }
                        }
                        if (attachment == null)
                        {
                            throw new ObjectNotFoundException(ServerStrings.MapiCannotOpenAttachmentId(attachmentId));
                        }
                        if (BodyConversionUtilities.IsMessageRestrictedAndDecoded(item) && AttachmentHelper.IsProtectedVoiceAttachment(attachment.FileName))
                        {
                            RightsManagedMessageItem rightsManagedMessageItem = item as RightsManagedMessageItem;
                            rightsManagedMessageItem.UnprotectAttachment(attachment.Id);
                            AttachmentId id = attachment.Id;
                            attachment.Dispose();
                            attachment = rightsManagedMessageItem.ProtectedAttachmentCollection.Open(id);
                        }
                        if (!maxAttachmentSize.IsUnlimited && attachment.Size > (long)maxAttachmentSize.Value.ToBytes())
                        {
                            throw new DataTooLargeException(StatusCode.AttachmentIsTooLarge);
                        }
                        result = AttachmentHelper.GetAttachmentItself(attachment, outStream, offset, count, out total);
                    }
                    finally
                    {
                        if (attachment != null)
                        {
                            attachment.Dispose();
                        }
                        if (rightsManagementSupport)
                        {
                            Command.CurrentCommand.SaveLicense(item);
                        }
                    }
                }
            }
            return(result);
        }