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); }
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(); }
internal TnefContentWriterAttributeStream(ItemToTnefConverter.TnefContentWriter writer) : base(StreamBase.Capabilities.Writable) { this.writer = writer; }