void exporter_OnException(object sender, ExchangeExceptionEventArgs e)
        {
            string errText = e.OriginalException.Message;

            AddToLog(errText);
            OutlookExport exporter = (OutlookExport)sender;

            exporter.Terminate();
            e.Handled = true;
            //throw e.OriginalException;
        }
        private void ExportUsingCriteria()
        {
            OutlookExport exporter = schedulerControl1.Storage.CreateOutlookExporter() as OutlookExport;

            if (exporter != null)
            {
                exporter.AppointmentExporting += exporter_AppointmentExporting;
                exporter.AppointmentExported  += exporter_AppointmentExported;
                exporter.OnException          += exporter_OnException;
                exporter.CalendarFolderName    = OutlookExchangeHelper.GetOutlookCalendarFolders().FirstOrDefault().FullPath;
                using (MemoryStream stream = new MemoryStream()) {
                    exporter.Export(stream);
                }
            }
        }
Esempio n. 3
0
        public void Execute(Outlook.Application outlook, string[] args)
        {
            Log.Info("Starting rules export");

            var rulefile = new OutlookExport
            {
                ReceiveRules = new List <Rule>(),
                SendRules    = new List <Rule>()
            };

            var rules     = outlook.Session.DefaultStore.GetRules();
            var ruleParts = typeof(Export).Assembly.GetImplementations <IRulePart>().ToList();

            foreach (var rule in rules.OfType <Outlook.Rule>())
            {
                Log.Info($"Exporting rule \"{rule.Name}\"...");
                var ruleModel = ruleParts.Where(r => r.IsEnabled(rule))
                                .Aggregate(new Rule {
                    Name = rule.Name
                }, (model, r) => r.ApplyToModel(model, rule));

                switch (rule.RuleType)
                {
                case Outlook.OlRuleType.olRuleReceive:
                    rulefile.ReceiveRules.Add(ruleModel);
                    break;

                case Outlook.OlRuleType.olRuleSend:
                    rulefile.SendRules.Add(ruleModel);
                    break;
                }
            }

            Log.Info("Writing rulefile...");
            Json.WriteFile(rulefile, args[0]);
            Log.Info("Finished rules export");
        }