/// <summary> /// This method registers events to monitor folders /// We only support default Outlook folders /// </summary> /// <param name="operation">parameters for EventMonitor</param> /// <returns></returns> private bool EventMonitor(MailSimOperationsEventMonitor operation) { // gets the default Outlook folder IMailFolder folder = olMailStore.GetDefaultFolder(operation.Folder); if (folder == null) { Log.Out(Log.Severity.Error, operation.OperationName, "Unable to retrieve folder {0}", operation.Folder); return(false); } // makes sure we are not already registered for the folder if (FolderEventList.Contains(folder)) { Log.Out(Log.Severity.Warning, operation.OperationName, "Event already registered for folder {0}", operation.Folder); return(true); } // registers the event and remember the folder else { // registers folder event if (RegisterFolderEvent(operation.OperationName, folder, true) != true) { Log.Out(Log.Severity.Error, operation.OperationName, "Unable to register event"); return(false); } } SleepOrStop(operation.OperationName, operation.Sleep); return(true); }
/// <summary> /// This method process the sequence file /// </summary> public void Execute() { if (sequence == null) { Log.Out(Log.Severity.Error, "Execute", "Sequence content is empty!"); return; } // Registers to monitor the Inbox MailSimOperationsEventMonitor inboxEvent = new MailSimOperationsEventMonitor(); inboxEvent.Folder = "olFolderInbox"; inboxEvent.OperationName = "DefaultInboxMonitor"; EventMonitor(inboxEvent); // Run each operation group foreach (MailSimSequenceOperationGroup group in sequence.OperationGroup) { int iterations = GetIterationCount(group.Iterations); // Run the operations file operations = ConfigurationFile.LoadOperationFile(group.OperationFile, out operationXML); if (operations == null) { Log.Out(Log.Severity.Error, group.Name, "Skipping OperationGroup"); continue; } for (int count = 1; count <= iterations; count++) { Log.Out(Log.Severity.Info, group.Name, "Starting group run {0}", count); foreach (MailSimSequenceOperationGroupTask task in group.Task) { ProcessTask(task); } Log.Out(Log.Severity.Info, group.Name, "Completed group task run {0}", count); SleepOrStop(group.Name, group.Sleep); } CleanupAfterIteration(); } }
/// <summary> /// This method process the sequence file /// </summary> internal void Execute() { if (sequence == null) { Log.Out(Log.Severity.Error, "Execute", "Sequence content is empty!"); return; } // Registers to monitor the Inbox MailSimOperationsEventMonitor inboxEvent = new MailSimOperationsEventMonitor(); inboxEvent.Folder = "olFolderInbox"; inboxEvent.OperationName = "DefaultInboxMonitor"; EventMonitor(inboxEvent); // Run each operation group foreach (MailSimSequenceOperationGroup group in sequence.OperationGroup) { int iterations = GetIterationCount(group.Iterations); // Run the operations file operations = ConfigurationFile.LoadOperationFile(group.OperationFile); if (operations == null) { Log.Out(Log.Severity.Error, group.Name, "Skipping OperationGroup"); continue; } for (int count = 1; count <= iterations; count++) { Log.Out(Log.Severity.Info, group.Name, "Starting group run {0}", count); foreach (MailSimSequenceOperationGroupTask task in group.Task) { ProcessTask(task); } Log.Out(Log.Severity.Info, group.Name, "Completed group task run {0}", count); SleepOrStop(group.Name, group.Sleep); } CleanupAfterIteration(); } }
/// <summary> /// This method registers events to monitor folders /// The EventMonitor supports default Outlook folders and subfolders via a path (see below) /// </summary> /// <param name="operation">parameters for EventMonitor</param> /// <returns></returns> /// In this case the Folder element is a path in Outlook. Each component of the path separated by '\'. /// The first or default folder in the path, can be preceded by "\\" or nothing. If it's the only part of /// the path, then it MUST be one of the default OL folders (see the schema for the EventMonitor operation). private bool EventMonitor(MailSimOperationsEventMonitor operation) { // gets the target folder for the event based on the path provided. IMailFolder folder = olMailStore.FindFolder(operation.Folder); if (folder == null) { Log.Out(Log.Severity.Error, operation.OperationName, "Unable to retrieve folder {0}", operation.Folder); return false; } // makes sure we are not already registered for the folder if (FolderEventList.Contains(folder)) { Log.Out(Log.Severity.Warning, operation.OperationName, "Event already registered for folder {0}", operation.Folder); return true; } // registers the event and remember the folder else { // registers folder event if (RegisterFolderEvent(operation.OperationName, folder, true) != true) { Log.Out(Log.Severity.Error, operation.OperationName, "Unable to register event"); return false; } } SleepOrStop(operation.OperationName, operation.Sleep); return true; }
/// <summary> /// This method registers events to monitor folders /// We only support default Outlook folders /// </summary> /// <param name="operation">parameters for EventMonitor</param> /// <returns></returns> private bool EventMonitor(MailSimOperationsEventMonitor operation) { try { // gets the default Outlook folder IMailFolder folder = olMailStore.GetDefaultFolder(operation.Folder); if (folder == null) { Log.Out(Log.Severity.Error, operation.OperationName, "Unable to retrieve folder {0}", operation.Folder); return false; } // makes sure we are not already registered for the folder if (FolderEventList.Contains(folder)) { Log.Out(Log.Severity.Warning, operation.OperationName, "Event already registered for folder {0}", operation.Folder); return true; } // registers the event and remember the folder else { // registers folder event if (RegisterFolderEvent(operation.OperationName, folder, true) != true) { Log.Out(Log.Severity.Error, operation.OperationName, "Unable to register event"); return false; } } SleepOrStop(operation.OperationName, operation.Sleep); } catch (Exception ex) { Log.Out(Log.Severity.Error, operation.OperationName, "Exception encountered\n" + ex); return false; } return true; }