private bool TryGenerateMessageFromMsgFileData(string defaultDomain) { bool result; using (Stream stream = new MemoryStream(this.MessageFileData)) { using (MessageItem messageItem = MessageItem.CreateInMemory(StoreObjectSchema.ContentConversionProperties)) { using (Stream stream2 = new MemoryStream()) { try { InboundConversionOptions inboundConversionOptions = new InboundConversionOptions(defaultDomain); inboundConversionOptions.UserADSession = this.GetRecipientSession(); OutboundConversionOptions outboundConversionOptions = new OutboundConversionOptions(defaultDomain); outboundConversionOptions.UserADSession = inboundConversionOptions.UserADSession; ItemConversion.ConvertMsgStorageToItem(stream, messageItem, inboundConversionOptions); if (this.WasSpecifiedByUser("Sender")) { SmtpAddress sender = this.Sender; Participant sender2 = new Participant(string.Empty, (string)this.Sender, "SMTP"); messageItem.Sender = sender2; } ItemConversion.ConvertItemToSummaryTnef(messageItem, stream2, outboundConversionOptions); stream2.Position = 0L; this.message = EmailMessage.Create(stream2); result = true; } catch (CorruptDataException ex) { base.WriteVerbose(Strings.UnableToCreateFromMsg(ex.Message)); result = false; } catch (ConversionFailedException ex2) { base.WriteVerbose(Strings.UnableToCreateFromMsg(ex2.Message)); result = false; } catch (PropertyErrorException ex3) { base.WriteVerbose(Strings.UnableToCreateFromMsg(ex3.Message)); result = false; } catch (StoragePermanentException ex4) { base.WriteVerbose(Strings.UnableToCreateFromMsg(ex4.Message)); result = false; } catch (StorageTransientException ex5) { base.WriteVerbose(Strings.UnableToCreateFromMsg(ex5.Message)); result = false; } } } } return(result); }
public TimeSpan CopyContentTo(TransportMailItem mailItem) { this.ConversionOptions.RecipientCache = mailItem.ADRecipientCache; this.ConversionOptions.UserADSession = mailItem.ADRecipientCache.ADSession; mailItem.CacheTransportSettings(); this.ConversionOptions.ClearCategories = mailItem.TransportSettings.ClearCategories; this.ConversionOptions.UseRFC2231Encoding = mailItem.TransportSettings.Rfc2231EncodingEnabled; this.ConversionOptions.AllowDlpHeadersToPenetrateFirewall = true; this.storeDriverTracer.StoreDriverCommonTracer.TracePass <long>(this.storeDriverTracer.MessageProbeActivityId, 0L, "Generate content for mailitem {0}", mailItem.RecordId); ExDateTime utcNow = ExDateTime.UtcNow; using (Stream stream = mailItem.OpenMimeWriteStream(MimeLimits.Default)) { this.conversionResult = ItemConversion.ConvertItemToSummaryTnef(this.messageItem, stream, this.ConversionOptions); stream.Flush(); } return(ExDateTime.UtcNow - utcNow); }
private void CopyMfnContentTo(MeetingForwardNotification meetingForwardNotification, TransportMailItem mailItem) { OutboundConversionOptions outboundConversionOptions = new OutboundConversionOptions(Components.Configuration.FirstOrgAcceptedDomainTable.DefaultDomainName); outboundConversionOptions.DsnMdnOptions = DsnMdnOptions.PropagateUserSettings; outboundConversionOptions.DsnHumanReadableWriter = Components.DsnGenerator.DsnHumanReadableWriter; outboundConversionOptions.RecipientCache = mailItem.ADRecipientCache; outboundConversionOptions.UserADSession = mailItem.ADRecipientCache.ADSession; mailItem.CacheTransportSettings(); outboundConversionOptions.ClearCategories = mailItem.TransportSettings.ClearCategories; outboundConversionOptions.UseRFC2231Encoding = mailItem.TransportSettings.Rfc2231EncodingEnabled; outboundConversionOptions.Limits.MimeLimits = MimeLimits.Unlimited; outboundConversionOptions.AllowDlpHeadersToPenetrateFirewall = true; using (Stream stream = mailItem.OpenMimeWriteStream()) { if (Components.Configuration.LocalServer.TransportServer.ContentConversionTracingEnabled && Components.Configuration.LocalServer.TransportServer.PipelineTracingPath != null) { outboundConversionOptions.LogDirectoryPath = Components.Configuration.LocalServer.TransportServer.PipelineTracingPath.PathName; } ItemConversion.ConvertItemToSummaryTnef(meetingForwardNotification, stream, outboundConversionOptions); } }