Ejemplo n.º 1
0
        public virtual void ProcessMail()
        {
            QueueMessages(ConnectInfo.PathInfo.QueueDirectory);
            Log(string.Format("\r\nConnecting to {0}:{1} as {2}.", ConnectInfo.Host, ConnectInfo.TcpPort, ConnectInfo.Username));

            IMailboxWorker mailboxWorker = Activator.CreateInstance <Tpop>();

            mailboxWorker.ConnectInfo                  = ConnectInfo;
            mailboxWorker.MessageCountReceived        += new MessageInfoHandler(MailboxWorkerMessageCountReceived);
            mailboxWorker.MessageRecieved             += new MessageInfoHandler(MailboxWorkerMessageRecieved);
            mailboxWorker.ServerError                 += new MessageInfoHandler(MailboxWorkerServerError);
            mailboxWorker.MessagePreviouslyDownloaded += new MessageInfoHandler(MailboxWorkerPreviouslyDownloaded);
            mailboxWorker.MessageRequested            += new MessageInfoHandler(MailboxWorkerMessageRequested);
            mailboxWorker.DownloadMessages();
            WorkPool.WaitFor();
        }
Ejemplo n.º 2
0
        protected virtual void MailboxWorkerMessageRecieved(object sender, MessageInfoEventArgs e)
        {
            lock ( synclock )
            {
                Total++;
                IMimeFileWorker worker = Activator.CreateInstance <Tmime>();
                worker.BeginProcessing   += new MessageInfoHandler(MimeFileWorkerBeginProcessing);
                worker.DoneProcessing    += new MessageInfoHandler(MimeFileWorkerDoneProcessing);
                worker.ProcessingError   += new MessageInfoHandler(MimeFileWorkerProcessingError);
                worker.ProcessingWarning += new MessageInfoHandler(MimeFileWorkerProcessingWarning);
                WorkPool.QueueWorkItem <string>(x => worker.Process(ConnectInfo.PathInfo, x), e.Info);
            }

            string message = string.Format("Message {0} received. ", Path.GetFileName(e.Info));

            Log(message);
        }
Ejemplo n.º 3
0
        private void QueueMessages(string directory)
        {
            string[] files = Directory.GetFiles(directory);
            if (files.Length > 0)
            {
                Log("Found one or more existing messages queued on disk.\r\nAdding them to work set.", ConsoleColor.DarkYellow, ConsoleColor.Black);

                foreach (string file in files)
                {
                    IMimeFileWorker worker = Activator.CreateInstance <Tmime>();
                    worker.BeginProcessing   += new MessageInfoHandler(MimeFileWorkerBeginProcessing);
                    worker.DoneProcessing    += new MessageInfoHandler(MimeFileWorkerDoneProcessing);
                    worker.ProcessingError   += new MessageInfoHandler(MimeFileWorkerProcessingError);
                    worker.ProcessingWarning += new MessageInfoHandler(MimeFileWorkerProcessingWarning);
                    WorkPool.QueueWorkItem <string>(x => worker.Process(ConnectInfo.PathInfo, x), file);
                }
            }
        }
Ejemplo n.º 4
0
 public MailSupervisor(PopConnectInfo c)
 {
     ConnectInfo = c;
     WorkPool    = new WorkPool();
     Total       = 0;
 }