private void WriteAttachedItem(ItemAttachment itemAttachment) { using (Item item = itemAttachment.GetItem(InternalSchema.ContentConversionProperties)) { this.limitsTracker.StartEmbeddedMessage(); using (MsgStorageWriter embeddedMessageWriter = this.PropertyWriter.GetEmbeddedMessageWriter()) { OutboundMsgConverter outboundMsgConverter = new OutboundMsgConverter(this.options); outboundMsgConverter.InternalConvertItemToMsgStorage(item, embeddedMessageWriter, this.limitsTracker); } this.limitsTracker.EndEmbeddedMessage(); } }
internal void ConvertItemToMsgStorage(Item item, Stream outStream) { MsgStorageWriter msgStorageWriter = null; try { msgStorageWriter = new MsgStorageWriter(outStream); ConversionLimitsTracker conversionLimitsTracker = new ConversionLimitsTracker(this.options.Limits); conversionLimitsTracker.CountMessageBody(); this.InternalConvertItemToMsgStorage(item, msgStorageWriter, conversionLimitsTracker); } finally { if (msgStorageWriter != null) { msgStorageWriter.Dispose(); } } }
private void InternalConvertItemToMsgStorage(Item item, MsgStorageWriter writer, ConversionLimitsTracker limitsTracker) { this.item = item; this.writer = writer; this.limitsTracker = limitsTracker; this.addressCache = new OutboundAddressCache(this.options, limitsTracker); ExTimeZone exTimeZone = this.item.PropertyBag.ExTimeZone; this.item.PropertyBag.ExTimeZone = ExTimeZone.UtcTimeZone; try { this.addressCache.CopyDataFromItem(this.item); this.WriteMessageProperties(); this.WriteRecipientTable(); this.WriteAttachments(); this.writer.Flush(); } finally { this.item.PropertyBag.ExTimeZone = exTimeZone; } }