コード例 #1
0
        private MimePartInfo FindMimePart(uint[] indices)
        {
            MimePartInfo mimePartInfo = this.GetMimeSkeleton();
            int          num          = indices.Length;

            for (int num2 = 0; num2 != num; num2++)
            {
                int num3 = (int)(indices[num2] - 1U);
                if (num3 < 0)
                {
                    throw new ArgumentException("indices");
                }
                if (mimePartInfo.ContentType == MimePartContentType.ItemAttachment)
                {
                    mimePartInfo = mimePartInfo.AttachedItemStructure;
                    if (mimePartInfo == null)
                    {
                        return(null);
                    }
                }
                if (mimePartInfo.Children == null || mimePartInfo.Children.Count <= num3)
                {
                    return(null);
                }
                mimePartInfo = mimePartInfo.Children[num3];
            }
            return(mimePartInfo);
        }
コード例 #2
0
 public override void GetBody(Stream outStream)
 {
     StorageGlobals.ContextTraceInformation(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::GetBody.1");
     this.CheckDisposed(null);
     if (outStream == null)
     {
         throw new ArgumentNullException("outStream");
     }
     using (StorageGlobals.SetTraceContext(this.options))
     {
         using (StorageGlobals.SetTraceContext(this.itemIn))
         {
             StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Starting item (ImapItemConverter.GetBody.1)");
             MimePartInfo mimeSkeleton = this.GetMimeSkeleton();
             using (Stream stream = new StreamWrapper(outStream, false))
             {
                 using (MimeStreamWriter mimeStreamWriter = new MimeStreamWriter(stream, this.itemEncodingOptions, (MimeStreamWriter.Flags) 6))
                 {
                     this.WriteMimePart(this.mimeProvider, mimeStreamWriter, this.options, mimeSkeleton, ItemToMimeConverter.MimeFlags.WriteMessageHeaders);
                 }
             }
             StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetBody.1)");
         }
     }
 }
コード例 #3
0
        public override MimePartHeaders GetHeaders()
        {
            StorageGlobals.ContextTraceInformation(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::GetHeaders.1");
            this.CheckDisposed(null);
            MimePartHeaders headers;

            using (StorageGlobals.SetTraceContext(this.options))
            {
                using (StorageGlobals.SetTraceContext(this.itemIn))
                {
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Starting item (ImapItemConverter.GetHeaders.1)");
                    MimePartInfo mimeSkeleton = this.GetMimeSkeleton();
                    if (mimeSkeleton.Headers == null || mimeSkeleton.Headers.Count == 0)
                    {
                        using (MimeStreamWriter mimeStreamWriter = new MimeStreamWriter((MimeStreamWriter.Flags) 6, this.itemEncodingOptions))
                        {
                            this.WriteMimePart(this.mimeProvider, mimeStreamWriter, this.options, mimeSkeleton, ItemToMimeConverter.MimeFlags.WriteMessageHeaders | ItemToMimeConverter.MimeFlags.SkipContent);
                        }
                    }
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetHeaders.1)");
                    headers = mimeSkeleton.Headers;
                }
            }
            return(headers);
        }
コード例 #4
0
        private MimePartInfo CalculateMimeSubStructure(MimePart part, Charset itemCharset, ref int partIndex)
        {
            MimePartInfo mimePartInfo = null;

            if (part.IsEmbeddedMessage)
            {
                mimePartInfo = new MimePartInfo(itemCharset, null, MimePartContentType.ItemAttachment, null, null, null, part, this.smimeDoc, ref partIndex);
                int num = 0;
                mimePartInfo.AttachedItemStructure = this.CalculateMimeSubStructure((MimePart)part.FirstChild, itemCharset, ref num);
            }
            else
            {
                mimePartInfo = new MimePartInfo(itemCharset, null, MimePartInfo.GetContentType(part.ContentType), null, null, null, part, this.smimeDoc, ref partIndex);
                foreach (MimePart part2 in part)
                {
                    mimePartInfo.AddChild(this.CalculateMimeSubStructure(part2, itemCharset, ref partIndex));
                }
            }
            foreach (Header header in part.Headers)
            {
                mimePartInfo.AddHeader(header);
            }
            MimeStreamWriter.CalculateBodySize(mimePartInfo, part);
            return(mimePartInfo);
        }
コード例 #5
0
 private bool GetText(Stream outStream, bool isSinglePartOnly)
 {
     StorageGlobals.ContextTraceInformation(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::GetText.1");
     this.CheckDisposed(null);
     if (outStream == null)
     {
         throw new ArgumentNullException("outStream");
     }
     using (StorageGlobals.SetTraceContext(this.options))
     {
         using (StorageGlobals.SetTraceContext(this.itemIn))
         {
             StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Starting item (ImapItemConverter.GetText.1)");
             MimePartInfo mimeSkeleton = this.GetMimeSkeleton();
             if (isSinglePartOnly && mimeSkeleton.IsMultipart)
             {
                 return(false);
             }
             using (Stream stream = new StreamWrapper(outStream, false))
             {
                 using (MimeStreamWriter mimeStreamWriter = new MimeStreamWriter(stream, this.itemEncodingOptions, (MimeStreamWriter.Flags) 3))
                 {
                     this.WriteMimePart(this.mimeProvider, mimeStreamWriter, this.options, mimeSkeleton, ItemToMimeConverter.MimeFlags.SkipMessageHeaders);
                 }
             }
             StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetText.1)");
         }
     }
     return(true);
 }
コード例 #6
0
        public override MimePartInfo GetMimeStructure()
        {
            StorageGlobals.ContextTraceInformation(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::GetMimeStructure.");
            this.CheckDisposed(null);
            MimePartInfo result;

            using (StorageGlobals.SetTraceContext(this.options))
            {
                using (StorageGlobals.SetTraceContext(this.itemIn))
                {
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Starting item (ImapItemConverter.GetMimeStructure)");
                    MimePartInfo mimeSkeleton = this.GetMimeSkeleton();
                    if (mimeSkeleton.IsBodySizeComputed)
                    {
                        this.GetHeaders();
                    }
                    else
                    {
                        using (MimeStreamWriter mimeStreamWriter = new MimeStreamWriter((MimeStreamWriter.Flags) 6, this.itemEncodingOptions))
                        {
                            this.WriteMimePart(this.mimeProvider, mimeStreamWriter, this.options, mimeSkeleton, ItemToMimeConverter.MimeFlags.WriteMessageHeaders);
                        }
                    }
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetMimeStructure)");
                    result = mimeSkeleton;
                }
            }
            return(result);
        }
コード例 #7
0
        public override bool GetBody(Stream outStream, uint[] indices)
        {
            StorageGlobals.ContextTraceInformation(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::GetBody.2");
            this.CheckDisposed(null);
            bool result;

            using (StorageGlobals.SetTraceContext(this.options))
            {
                using (StorageGlobals.SetTraceContext(this.itemIn))
                {
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Starting item (ImapItemConverter.GetBody.2)");
                    bool flag = false;
                    if (indices == null || indices.Length == 0)
                    {
                        this.GetBody(outStream);
                        flag = true;
                    }
                    else
                    {
                        List <IDisposable> disposeList = null;
                        MimePartInfo       partInfo    = null;
                        Item item = null;
                        try
                        {
                            EncodingOptions   encodingOptions;
                            IImapMimeProvider subpartConverter = this.GetSubpartConverter(indices, out partInfo, out item, out encodingOptions, out disposeList);
                            if (subpartConverter != null)
                            {
                                using (Stream stream = new StreamWrapper(outStream, false))
                                {
                                    using (MimeStreamWriter mimeStreamWriter = new MimeStreamWriter(stream, encodingOptions, (MimeStreamWriter.Flags) 3))
                                    {
                                        this.WriteMimePart(subpartConverter, mimeStreamWriter, this.options, partInfo, ItemToMimeConverter.MimeFlags.SkipMessageHeaders);
                                    }
                                }
                                flag = true;
                            }
                        }
                        finally
                        {
                            this.DisposeAll(disposeList);
                        }
                    }
                    if (!flag)
                    {
                        int num = indices.Length - 1;
                        if (indices[num] == 1U)
                        {
                            uint[] array = new uint[num];
                            Array.Copy(indices, array, num);
                            flag = this.GetText(outStream, array, true);
                        }
                    }
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetBody.2)");
                    result = flag;
                }
            }
            return(result);
        }
コード例 #8
0
 public void AddChild(MimePartInfo newChild)
 {
     if (this.children == null)
     {
         this.children = new List <MimePartInfo>();
     }
     this.children.Add(newChild);
 }
コード例 #9
0
        private bool GetText(Stream outStream, uint[] indices, bool isSinglePartOnly)
        {
            StorageGlobals.ContextTraceInformation(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::GetText.2");
            this.CheckDisposed(null);
            bool result;

            using (StorageGlobals.SetTraceContext(this.options))
            {
                using (StorageGlobals.SetTraceContext(this.itemIn))
                {
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Starting item (ImapItemConverter.GetText.2)");
                    bool flag = false;
                    if (indices == null || indices.Length == 0)
                    {
                        flag = this.GetText(outStream, isSinglePartOnly);
                    }
                    else
                    {
                        List <IDisposable> disposeList  = null;
                        MimePartInfo       mimePartInfo = null;
                        Item            item            = null;
                        EncodingOptions encodingOptions = null;
                        try
                        {
                            IImapMimeProvider imapMimeProvider = this.GetSubpartConverter(indices, out mimePartInfo, out item, out encodingOptions, out disposeList);
                            if (imapMimeProvider != null)
                            {
                                imapMimeProvider = this.GetAttachedItemConverter(ref mimePartInfo, ref item, ref encodingOptions, disposeList);
                                if (imapMimeProvider != null && (!mimePartInfo.IsMultipart || !isSinglePartOnly))
                                {
                                    using (Stream stream = new StreamWrapper(outStream, false))
                                    {
                                        using (MimeStreamWriter mimeStreamWriter = new MimeStreamWriter(stream, encodingOptions, MimeStreamWriter.Flags.SkipHeaders))
                                        {
                                            this.WriteMimePart(imapMimeProvider, mimeStreamWriter, this.options, mimePartInfo, ItemToMimeConverter.MimeFlags.SkipMessageHeaders);
                                        }
                                    }
                                    flag = true;
                                }
                            }
                        }
                        finally
                        {
                            this.DisposeAll(disposeList);
                        }
                    }
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetText.2)");
                    result = flag;
                }
            }
            return(result);
        }
コード例 #10
0
 internal static void CalculateBodySize(MimePartInfo partInfo, MimePart part)
 {
     if (partInfo.IsBodySizeComputed)
     {
         return;
     }
     using (Stream stream = new MimeStreamWriter.MimeBodySizeCounter(null, partInfo))
     {
         using (Stream rawContentReadStream = part.GetRawContentReadStream())
         {
             Util.StreamHandler.CopyStreamData(rawContentReadStream, stream);
         }
     }
 }
コード例 #11
0
        public override MimePartHeaders GetMime(uint[] indices)
        {
            StorageGlobals.ContextTraceInformation(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::GetMime.");
            this.CheckDisposed(null);
            if (indices == null || indices.Length == 0)
            {
                return(null);
            }
            MimePartHeaders result;

            using (StorageGlobals.SetTraceContext(this.options))
            {
                using (StorageGlobals.SetTraceContext(this.itemIn))
                {
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Starting item (ImapItemConverter.GetMime)");
                    MimePartHeaders mimePartHeaders = null;
                    MimePartInfo    mimePartInfo    = this.FindMimePart(indices);
                    if (mimePartInfo != null && mimePartInfo.Headers != null && mimePartInfo.Headers.Count != 0)
                    {
                        mimePartHeaders = mimePartInfo.Headers;
                    }
                    else
                    {
                        mimePartInfo = this.GetMimeSkeleton();
                        List <IDisposable> disposeList  = null;
                        Item            item            = null;
                        EncodingOptions encodingOptions = null;
                        try
                        {
                            IImapMimeProvider subpartConverter = this.GetSubpartConverter(indices, out mimePartInfo, out item, out encodingOptions, out disposeList);
                            if (subpartConverter != null)
                            {
                                using (MimeStreamWriter mimeStreamWriter = new MimeStreamWriter(MimeStreamWriter.Flags.ProduceMimeStructure, encodingOptions))
                                {
                                    this.WriteMimePart(subpartConverter, mimeStreamWriter, this.options, mimePartInfo, ItemToMimeConverter.MimeFlags.SkipContent);
                                }
                                mimePartHeaders = mimePartInfo.Headers;
                            }
                        }
                        finally
                        {
                            this.DisposeAll(disposeList);
                        }
                    }
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetMime)");
                    result = mimePartHeaders;
                }
            }
            return(result);
        }
コード例 #12
0
        private IImapMimeProvider GetSubpartConverter(uint[] indices, out MimePartInfo part, out Item item, out EncodingOptions encodingOptions, out List <IDisposable> disposeList)
        {
            part            = null;
            item            = null;
            disposeList     = null;
            encodingOptions = null;
            List <IDisposable> list = new List <IDisposable>();
            IImapMimeProvider  result;

            try
            {
                IImapMimeProvider attachedItemConverter = this.mimeProvider;
                Item            item2            = this.itemIn;
                EncodingOptions encodingOptions2 = this.itemEncodingOptions;
                MimePartInfo    mimePartInfo     = this.GetMimeSkeleton();
                for (int num = 0; num != indices.Length; num++)
                {
                    if (mimePartInfo.ContentType == MimePartContentType.ItemAttachment)
                    {
                        attachedItemConverter = this.GetAttachedItemConverter(ref mimePartInfo, ref item2, ref encodingOptions2, list);
                        if (attachedItemConverter == null)
                        {
                            return(null);
                        }
                    }
                    int num2 = (int)(indices[num] - 1U);
                    if (num2 < 0)
                    {
                        throw new ArgumentException("indices");
                    }
                    if (mimePartInfo.Children == null || mimePartInfo.Children.Count <= num2)
                    {
                        return(null);
                    }
                    mimePartInfo = mimePartInfo.Children[num2];
                }
                part            = mimePartInfo;
                item            = item2;
                encodingOptions = encodingOptions2;
                disposeList     = list;
                list            = null;
                result          = attachedItemConverter;
            }
            finally
            {
                this.DisposeAll(list);
            }
            return(result);
        }
コード例 #13
0
        internal void StartPart(MimePartInfo part, bool outputToSkeleton)
        {
            this.FlushCachedHeader();
            if (this.currentPart != null)
            {
                this.StartWriting();
                if ((this.flags & MimeStreamWriter.Flags.ProduceMimeStructure) == MimeStreamWriter.Flags.ProduceMimeStructure && this.currentPart.IsMultipart)
                {
                    this.currentPart.ChildrenWrittenOut();
                }
            }
            MimePartHeaders mimePartHeaders = (part == null) ? null : part.Headers;

            this.currentPart   = part;
            this.hasAllHeaders = (mimePartHeaders != null);
            if (this.mimeWriter != null)
            {
                this.mimeWriter.StartPart();
                if (this.hasAllHeaders)
                {
                    this.CopyHeadersToWriter(mimePartHeaders, this.mimeWriter);
                }
            }
            if (this.mimeSkeletonWriter != null && outputToSkeleton)
            {
                this.mimeSkeletonWriter.StartPart();
                if (mimePartHeaders != null)
                {
                    this.CopyHeadersToWriter(mimePartHeaders, this.mimeSkeletonWriter);
                }
            }
            this.assembleHeaders = false;
            if (this.currentPart != null && (this.flags & MimeStreamWriter.Flags.ProduceMimeStructure) == MimeStreamWriter.Flags.ProduceMimeStructure)
            {
                if (mimePartHeaders == null)
                {
                    this.assembleHeaders = true;
                    if ((this.flags & MimeStreamWriter.Flags.ForceMime) == MimeStreamWriter.Flags.ForceMime)
                    {
                        Header header = Header.Create(HeaderId.MimeVersion);
                        header.Value = "1.0";
                        this.currentPart.AddHeader(header);
                    }
                }
                this.flags &= (MimeStreamWriter.Flags)(-5);
            }
        }
コード例 #14
0
        private IImapMimeProvider GetAttachedItemConverter(ref MimePartInfo part, ref Item item, ref EncodingOptions itemEncodingOptions, List <IDisposable> disposeList)
        {
            if (part.ContentType != MimePartContentType.ItemAttachment)
            {
                return(null);
            }
            IImapMimeProvider imapMimeProvider;

            if (part.SmimePart == null)
            {
                Attachment attachment = item.AttachmentCollection.Open(part.AttachmentId, InternalSchema.ContentConversionProperties);
                disposeList.Add(attachment);
                ItemAttachment itemAttachment = attachment as ItemAttachment;
                if (itemAttachment == null)
                {
                    StorageGlobals.ContextTraceError(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::GetAttachedItemConverter: attachment is not an item.");
                    ExAssert.RetailAssert(false, "ImapItemConverter::GetAttachedItemConverter: attachment is not an item.");
                    return(null);
                }
                item = ConvertUtils.OpenAttachedItem(itemAttachment);
                if (item == null)
                {
                    return(null);
                }
                disposeList.Add(item);
                ItemToMimeConverter itemToMimeConverter = new ItemToMimeConverter(item, this.options, ConverterFlags.IsEmbeddedMessage);
                imapMimeProvider = IImapMimeProvider.CreateInstance(itemToMimeConverter);
                disposeList.Add(imapMimeProvider);
                itemEncodingOptions = itemToMimeConverter.GetItemMimeEncodingOptions(this.options);
                if (part.AttachedItemStructure != null)
                {
                    itemToMimeConverter.SetSkeletonAndSmimeDoc(part.AttachedItemStructure.Skeleton, part.AttachedItemStructure.SmimeDocument);
                }
            }
            else
            {
                imapMimeProvider = IImapMimeProvider.CreateInstance((MimePart)part.SmimePart.FirstChild, part.SmimeDocument);
                disposeList.Add(imapMimeProvider);
                itemEncodingOptions = this.itemEncodingOptions;
            }
            if (part.AttachedItemStructure == null)
            {
                part.AttachedItemStructure = imapMimeProvider.CalculateMimeStructure(Charset.GetCharset(itemEncodingOptions.CharsetName));
            }
            part = part.AttachedItemStructure;
            return(imapMimeProvider);
        }
コード例 #15
0
 internal override void WriteMimePart(MimeStreamWriter mimeWriter, ConversionLimitsTracker limits, MimePartInfo part, ItemToMimeConverter.MimeFlags mimeFlags)
 {
     this.itemConverter.WriteMimePart(mimeWriter, limits, part, mimeFlags);
 }
コード例 #16
0
        public override MimePartHeaders GetHeaders(uint[] indices)
        {
            StorageGlobals.ContextTraceInformation(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::GetHeaders.2");
            this.CheckDisposed(null);
            MimePartHeaders result;

            using (StorageGlobals.SetTraceContext(this.options))
            {
                using (StorageGlobals.SetTraceContext(this.itemIn))
                {
                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Starting item (ImapItemConverter.GetHeaders.2)");
                    if (indices == null || indices.Length == 0)
                    {
                        StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetHeaders.2)");
                        result = this.GetHeaders();
                    }
                    else
                    {
                        MimePartInfo mimePartInfo = this.FindMimePart(indices);
                        if (mimePartInfo != null)
                        {
                            if (mimePartInfo.ContentType != MimePartContentType.ItemAttachment)
                            {
                                StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetHeaders.2)");
                                return(null);
                            }
                            mimePartInfo = mimePartInfo.AttachedItemStructure;
                            if (mimePartInfo != null && mimePartInfo.Headers != null && mimePartInfo.Headers.Count != 0)
                            {
                                StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetHeaders.2)");
                                return(mimePartInfo.Headers);
                            }
                        }
                        mimePartInfo = this.GetMimeSkeleton();
                        List <IDisposable> disposeList = null;
                        Item item = null;
                        try
                        {
                            EncodingOptions encodingOptions;
                            if (this.GetSubpartConverter(indices, out mimePartInfo, out item, out encodingOptions, out disposeList) == null)
                            {
                                StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetHeaders.2)");
                                result = null;
                            }
                            else
                            {
                                IImapMimeProvider attachedItemConverter = this.GetAttachedItemConverter(ref mimePartInfo, ref item, ref encodingOptions, disposeList);
                                if (attachedItemConverter == null)
                                {
                                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetHeaders.2)");
                                    result = null;
                                }
                                else
                                {
                                    using (MimeStreamWriter mimeStreamWriter = new MimeStreamWriter((MimeStreamWriter.Flags) 6, encodingOptions))
                                    {
                                        this.WriteMimePart(attachedItemConverter, mimeStreamWriter, this.options, mimePartInfo, ItemToMimeConverter.MimeFlags.WriteMessageHeaders | ItemToMimeConverter.MimeFlags.SkipContent);
                                    }
                                    StorageGlobals.ContextTracePfd(ExTraceGlobals.CcPFDTracer, "Finishing item (ImapItemConverter.GetHeaders.2)");
                                    result = mimePartInfo.Headers;
                                }
                            }
                        }
                        finally
                        {
                            this.DisposeAll(disposeList);
                        }
                    }
                }
            }
            return(result);
        }
コード例 #17
0
 internal override void WriteMimePart(MimeStreamWriter mimeWriter, ConversionLimitsTracker limits, MimePartInfo part, ItemToMimeConverter.MimeFlags mimeFlags)
 {
     if ((mimeFlags & ItemToMimeConverter.MimeFlags.SkipContent) != ItemToMimeConverter.MimeFlags.SkipContent)
     {
         mimeWriter.WritePartWithHeaders(part.SmimePart, false);
         return;
     }
     mimeWriter.WriteHeadersFromPart(part.SmimePart);
 }
コード例 #18
0
 internal abstract void WriteMimePart(MimeStreamWriter mimeWriter, ConversionLimitsTracker limits, MimePartInfo part, ItemToMimeConverter.MimeFlags mimeFlags);
コード例 #19
0
 internal MimeBodySizeCounter(Stream stream, MimePartInfo part) : base(stream, true, StreamBase.Capabilities.Writable)
 {
     this.part      = part;
     this.lineCount = 0;
     this.byteCount = 0;
 }
コード例 #20
0
 internal void StartPart(MimePartInfo part)
 {
     this.StartPart(part, true);
 }
コード例 #21
0
 private void WriteMimePart(IImapMimeProvider mimeProvider, MimeStreamWriter writer, OutboundConversionOptions options, MimePartInfo partInfo, ItemToMimeConverter.MimeFlags conversionFlags)
 {
     try
     {
         ConvertUtils.CallCts(ExTraceGlobals.CcOutboundMimeTracer, "ImapItemConverter::WriteMimePart", ServerStrings.ConversionCorruptContent, delegate
         {
             ConversionLimitsTracker limits = new ConversionLimitsTracker(options.Limits);
             mimeProvider.WriteMimePart(writer, limits, partInfo, conversionFlags);
         });
     }
     catch (StoragePermanentException exc)
     {
         ItemConversion.SaveFailedItem(this.itemIn, options, exc);
         throw;
     }
 }