public Pop3ServiceEngine(Pop3ConnectionSettings settings) : base(new TimeSpan(0, 0, 5)) { if (settings == null) { throw new ArgumentNullException("settings"); } _settings = settings; // worker... _worker = new Pop3Worker(); _worker.MessageReceived += new MailMessageEventHandler(_worker_MessageReceived); }
private MailBox ProcessMailbox(MailBox mailbox, TasksConfig tasksConfig, CancellationToken cancelToken) { var taskLogger = LoggerFactory.GetLogger(LoggerFactory.LoggerType.Log4Net, "Task_" + Task.CurrentId); taskLogger.Info( "ProcessMailbox(Tenant = {0}, MailboxId = {1} Address = '{2}') Is {3}", mailbox.TenantId, mailbox.MailBoxId, mailbox.EMail, mailbox.Active ? "Active" : "Inactive"); try { var manager = new MailBoxManager(taskLogger) { AuthErrorWarningTimeout = tasksConfig.AuthErrorWarningTimeout, AuthErrorDisableTimeout = tasksConfig.AuthErrorDisableMailboxTimeout }; if (mailbox.Imap) { using (var worker = new Imap4Worker(manager, mailbox, tasksConfig, cancelToken, taskLogger)) { worker.Aggregate(); } } else { using (var worker = new Pop3Worker(manager, mailbox, tasksConfig, cancelToken, taskLogger)) { worker.Aggregate(); } } taskLogger.Info("Mailbox '{0}' has been processed.", mailbox.EMail); } catch (OperationCanceledException) { taskLogger.Info("Task canceled."); throw; } catch (Exception ex) { taskLogger.Error( "ProcessMailbox(Tenant = {0}, MailboxId = {1}, Address = '{2}')\r\nException: {3}\r\n", mailbox.TenantId, mailbox.MailBoxId, mailbox.EMail, ex.ToString()); } return(mailbox); }