示例#1
0
        private long WriteAttachedItem(ItemAttachment attachment)
        {
            Item item   = ConvertUtils.OpenAttachedItem(attachment);
            long result = 0L;

            if (item != null)
            {
                try
                {
                    this.limitsTracker.StartEmbeddedMessage();
                    Charset itemWindowsCharset = ConvertUtils.GetItemWindowsCharset(item, this.options);
                    using (ItemToTnefConverter.TnefContentWriter embeddedMessageWriter = this.tnefWriter.GetEmbeddedMessageWriter(itemWindowsCharset))
                    {
                        OutboundAddressCache outboundAddressCache = new OutboundAddressCache(this.options, this.limitsTracker);
                        outboundAddressCache.CopyDataFromItem(item);
                        if (this.tnefType == TnefType.LegacyTnef && this.options.ResolveRecipientsInAttachedMessages)
                        {
                            outboundAddressCache.Resolve();
                        }
                        using (ItemToTnefConverter itemToTnefConverter = new ItemToTnefConverter(item, outboundAddressCache, embeddedMessageWriter, this.options, this.limitsTracker, this.tnefType, true))
                        {
                            ConversionResult conversionResult = itemToTnefConverter.Convert();
                            result = conversionResult.BodySize + conversionResult.AccumulatedAttachmentSize;
                        }
                    }
                    this.limitsTracker.EndEmbeddedMessage();
                }
                finally
                {
                    item.Dispose();
                }
            }
            return(result);
        }
示例#2
0
 internal ItemToTnefConverter(Item itemIn, OutboundAddressCache addressCache, ItemToTnefConverter.TnefContentWriter writer, OutboundConversionOptions options, ConversionLimitsTracker limits, TnefType tnefType, bool parsingEmbeddedItem) : this(itemIn, addressCache, options, limits, tnefType, parsingEmbeddedItem)
 {
     this.tnefWriter         = writer;
     this.tnefCorrelationKey = null;
     this.propertyChecker    = new TnefPropertyChecker(tnefType, parsingEmbeddedItem, options);
     this.disposeTracker     = this.GetDisposeTracker();
 }
示例#3
0
 internal TnefContentWriterAttributeStream(ItemToTnefConverter.TnefContentWriter writer) : base(StreamBase.Capabilities.Writable)
 {
     this.writer = writer;
 }