Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }