示例#1
0
        static void Main(string[] args)
        {
repiat:
            Console.Clear();
            Console.WriteLine("НАчинаю работу приложения");
            /************************переменные для логера**************************/
            const string Error_   = "Ошибка";
            const string Warning_ = "Предупреждение";
            const string Event_   = "Событие";

            /************************переменные для логера конец********************/
            //Logger.Run_();
            Logger.WriteLog(Event_, 0, "Старт");
            /**********Выполняем батники для отправки**********/
            /***********Переменные для батников*********/
            string batPuttyOut1 = @"C:\tkM\copyOUTputty.bat";
            string batPuttyOut2 = @"C:\tkM\copyOUTarch.bat";
            string batInPutty1  = @"C:\tkM\copyOUTarch.bat";
            string batInPutty2  = @"C:\tkM\copyOUTarch.bat";

            string pathBat = @"C:\tkM";

            string descrBatO1 = "fromPuttyToOut1";
            string descrBatO2 = "fromPuttyToOut2";
            string descrBatI3 = "fromPuttyToIN1";
            string descrBatI4 = "fromPuttyToIN2";


            //*************батники на отправку*********//
            FileM.ProcManage(batPuttyOut1, pathBat, descrBatO1);
            FileM.ProcManage(batPuttyOut2, pathBat, descrBatO2);


            //try
            //{
            //System.Diagnostics.Process proc = new System.Diagnostics.Process();
            //proc.StartInfo.FileName = @"C:\tkM\copyOUTarch.bat";
            //proc.StartInfo.WorkingDirectory = @"C:\tkM";
            //proc.Start();

            //proc.WaitForExit();
            //    Console.WriteLine("Батники на отправку успешно отработали");
            //    Logger.WriteLog(Event_ , 0, "Батники на отправку успешно отработали");
            //    proc = null; //ufc
            //}
            //catch(System.Exception ex)
            //{

            //    Logger.WriteLog(Error_, 100 , "ошибка выолнения батников" +  Convert.ToString(ex.Message));
            //    Console.WriteLine("ошибка выолнения батников" + Convert.ToString(ex.Message));
            //}
            /********************/

            Logger.WriteLog(Event_, 0, "Выполняю модуль отправки писем"); Console.WriteLine("Выполняю модуль отправки писем");
            //Outlook.Application application; //
            Outlook._NameSpace nameSpace;
            Outlook.MAPIFolder folderInbox;
            //////////////////////////////////
            //Microsoft.Office.Interop.Outlook._Folders oFolders;

            ///////////////1 модуль отправки файлов///////////////////
            string[] dirs;
            dirs = Directory.GetFiles(@"C:\tkM\OUT");                                //дирректория - откуда берём файл
            String dirs1count = Directory.GetFiles(@"C:\tkM\OUT").Length.ToString(); //если в папке out что то есть то отправляем письмо

            for (int i = 0; i < dirs.Length; i++)                                    //для отправки 1 письмо + 1 файл
            {
                Logger.WriteLog(Event_, 0, "Запускаю цикл обработки и отправки входящих файлов");

                if (Convert.ToInt32(dirs1count) > 0)

                {
                    Logger.WriteLog(Event_, 0, "Колличество файлов на отправку: " + dirs1count); Console.WriteLine("Выполняю модуль отправки писем");
                    //string dirArch = "C://OUT//ARCH//";
                    try
                    {
                        //тело отправляемого сообщения


                        Outlook._Application _app = new Outlook.Application();
                        Outlook.MailItem     mail = (Outlook.MailItem)_app.CreateItem(Outlook.OlItemType.olMailItem);
                        mail.To         = "*****@*****.**";               //"*****@*****.**";
                        mail.Subject    = "test1567";                              // тема
                        mail.Body       = "This is test message1156711";           //текст письма
                        mail.Importance = Outlook.OlImportance.olImportanceNormal; //какае то нужная вещь


                        foreach (string s in dirs)
                        {
                            try
                            {
                                Console.WriteLine(s);
                                mail.Attachments.Add(s);                          //добавляем вложения в письмо - возможно добавить сразу все вложения
                                File.Move(s, s.Replace("OUT", "ARCH"));           //После успешного прикрепления файла, переносим их в папку C:\ARCH
                                ((Outlook._MailItem)mail).Send();                 //отправляем письмо
                                Console.WriteLine("Файл" + s + "отправлен в ТК"); // если все хорошо, то выдаём в консоль сообщение
                                Logger.WriteLog(Event_, 0, "Файл" + s + "отправлен в ТК");
                                break;                                            // выхожу из цикла, что бы реализовать фичу 1 фал = 1 письмо, и так сойдёт :) рефакторинг потом
                            }
                            catch (System.Exception ex)
                            {
                                Logger.WriteLog(Warning_, 201, "Системное исключение" + ex.Message);
                                Logger.WriteLog(Warning_, 200, "С таким именем файла уже отправлялось\n" + "Перемещаю файл" + s + "в папку Bad также прочти системное исключение");

                                Console.WriteLine("С таким именем файла уже отправлялось\n" + "Перемещаю файл в папку Bad");
                                FileM.MoveReplaceFile(s, s.Replace("OUT", "Bad")); //прописываю каталог C:\tkM\Bad так быстрее не люблю много переменных
                                System.Threading.Thread.Sleep(1000);               //спим 1000 мс что б увидеть работу кода
                            }
                        }
                        Logger.WriteLog(Event_, 0, "успешно передан файл" + dirs[i]);
                        _app = null; //убиваем ссылки на экземпляр класса
                        mail = null;

                        //Console.Read();
                    }
                    catch (System.Exception ex)
                    {
                        Logger.WriteLog(Error_, 111, "Системная информация" + ex.Message);
                        Console.WriteLine("Что то пошло не так"); // если какае то бага то пишем это сообщение
                        Console.WriteLine("Не удалось отправить файлы, переходим к приёму файлов");
                        System.Threading.Thread.Sleep(1000);
                        Logger.WriteLog(Warning_, 300, "Переходим к модулю обработки входящих писем");
                        goto importStart; //если модуль отправки не отработал то программа переходит к модулю чтения сообщений
                    }
                    ////////////////////////////Чтение сообщений и копирование вложений///////////////////////////////////////////
                }
                else
                {
                    Console.WriteLine("Файлов для отправки нет"); Logger.WriteLog(Event_, 0, "Файлов для отправки нет - Переходим к модулю обраюлтки входящих писем"); break;
                }                                               //если нет файлов во вложении то выходим из цикла
                dirs1count = Directory.GetFiles(@"C:\tkM\OUT").Length.ToString();
                dirs       = Directory.GetFiles(@"C:\tkM\OUT"); //переинициализируем переменную с каждым шагом цикла - так как файлов то меньше на 1
                System.Threading.Thread.Sleep(1000);
            }
importStart:
            Logger.WriteLog(Event_, 0, "Обрабатываем входящие письма");

            Outlook.Application oApp = new Outlook.Application();// создали новый экземпляр
            Outlook.NameSpace   oNS  = oApp.GetNamespace("MAPI");

            //Это кусорк для чтения входящих сообщений для теста и понимания как это работает(раюотаем из папки входящие)
            //oNS.Logon(Missing.Value, Missing.Value, false, true);
            //Outlook.MAPIFolder oInbox = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

            //for (int x = 1; x <= oInbox.Items.Count; x++)
            //{
            //    if (oInbox.Items[x] is MailItem)
            //    {
            //        //Выводим Имя отправителя
            //        Console.WriteLine(oInbox.Items[x].SenderName + "\n" + "--------------------------------------------" + "\n");

            //    }
            //}
            nameSpace = oApp.GetNamespace("MAPI");
            object missingValue = System.Reflection.Missing.Value;

            folderInbox = nameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);                        //Outlook.OlDefaultFolders.olFolderInbox
                                                                                                                     //количество не прочитанных писем в папке Входящие (Inbox)
            Outlook.MAPIFolder rootFolder      = nameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); //получаем доступ к папке входящие
            Outlook.MAPIFolder processedFolder = null;                                                               //processedFolder это экземпляр класса который выбирает нужную папку
            foreach (Outlook.MAPIFolder folder in rootFolder.Folders)                                                // ищем циклом папку в OUTLOOK
            {
                if (folder.Name == "IN")                                                                             //берем из папки IN
                {
                    processedFolder = folder;                                                                        // выбираю папку с которой будем работать(в OUTLOOK нужно создать правило, что бы все вообщения от почты ТК переносились в папку IN, которую мы заранее создаём в OUTLOOK)
                    break;
                }
            }


            Outlook.Items unreadItems = processedFolder.Items.Restrict("[Unread]=true");           // работаем с данной папкой и ищем не прочитанные письма
            Console.WriteLine("Непрочитанных писем в папке in = " + unreadItems.Count.ToString()); // выдать в консоль колличество непрочитанных сообщений
            Logger.WriteLog(Event_, 0, "Непрочитанных писем в папке in = " + unreadItems.Count.ToString());
            //////////здесь вываодим в консоль все данные непрочитанные письма в папке in    можно заккоментить/////////////////////////
            StringBuilder str = new StringBuilder(); //читаем текст и данные письма выыодим в консоль не обязательно, но можно оставить для логирования

            try
            {
                DateTime sysdate_ = DateTime.Now;
                foreach (Outlook.MailItem mailItem in unreadItems)
                {
                    Logger.WriteLog(Event_, 0, "Читаю письмо");
                    str.AppendLine("----------------------------------------------------");
                    str.AppendLine("SenderName: " + mailItem.SenderName);
                    str.AppendLine("To: " + mailItem.To);
                    str.AppendLine("CC: " + mailItem.CC);
                    str.AppendLine("Subject: " + mailItem.Subject);
                    str.AppendLine("Body: " + mailItem.Body);
                    str.AppendLine("CreationTime: " + mailItem.CreationTime);
                    str.AppendLine("ReceivedByName: " + mailItem.ReceivedByName);
                    str.AppendLine("ReceivedTime: " + mailItem.ReceivedTime);
                    str.AppendLine("UnRead: " + mailItem.UnRead);
                    str.AppendLine(mailItem.ReceivedTime.Date.ToShortDateString() + sysdate_.ToShortDateString());
                    str.AppendLine("----------------------------------------------------");
                    Console.WriteLine(str.ToString());
                    Logger.WriteLog(Event_, 0, str.ToString());
                }
            }
            catch (System.Exception ex) // если письмо бракованное то пробуем ещё раз
            {
                //System.Threading.Thread.Sleep(300); //пауза

                //goto repeatReadMail;
                Logger.WriteLog(Error_, 102, "Ощибка сохранения письма или" + ex.Message);
                string errorInfo = (string)ex.Message.Substring(0, 11);
                Console.WriteLine(errorInfo);// вывести любую ошибку
                if (errorInfo == "Cannot save")
                {
                    Console.WriteLine(@"Create Folder C:\TestFileSave");
                }
                Logger.WriteLog(Event_, 0, "Перехожу к чтению вложений");
                goto repeatReadAndAddAttachmentIsMail; // перейти к чтению и вытаскиванию вложения в случае ошибки здесь
            }
            //foreach (Outlook.MailItem mail in unreadItems) //пометить как прочитанное реализация не удалять
            //{
            //    if (mail.UnRead)
            //    {
            //        mail.UnRead = false;
            //        mail.Save();
            //    }
            //}
            //////////////////Вытаскивание вложение и пометить письмо как прочитанное
repeatReadAndAddAttachmentIsMail:
            Outlook.Items inBoxItems = processedFolder.Items.Restrict("[Unread]=true");//show unread message and inicialise varible

            Outlook.MailItem newEmail = null;
            try
            {
                foreach (object collectionItem in inBoxItems)
                {
                    newEmail = collectionItem as Outlook.MailItem;
                    DateTime sysdate_ = DateTime.Now;                                                                           //SYSDATE
                    //mailItem.ReceivedTime.Date.ToShortDateString() + sysdate_.ToShortDateString();
                    if (newEmail != null /*&& newEmail.ReceivedTime.Date.ToShortDateString() == sysdate_.ToShortDateString()*/) //checj date of mail
                    {
                        if (newEmail.Attachments.Count > 0)
                        {
                            for (int i = 1; i <= newEmail.Attachments.Count; i++)
                            {
                                string   fileName = newEmail.Attachments[i].FileName; Console.WriteLine(@"Имя файла:" + fileName);
                                string[] dirsaRCH = Directory.GetFiles(@"C:\tkM\ARCH\");//создадим перепенную с именами файлов в папке  ARCH что бы проверять файлы в архиве
                                if (FileM.ValueOf(dirsaRCH, fileName) != "noDuble")
                                {
                                    Console.WriteLine(@"Найдено совпаление  с файлом: " + fileName + "\n Список файлов в папке:");
                                    Logger.WriteLog(Warning_, 0, @"Найдено совпаление  с файлом: " + fileName + "не обратываем");

                                    //for (int i1 = 0; i1 < dirsaRCH.Length; i1++)
                                    //{
                                    //    Console.Write( dirsaRCH[i1] + " " + File.GetCreationTime(dirsaRCH[i1]) + " - не обратываем" + ";\n");
                                    //    Logger.WriteLog(Warning_, 205, dirsaRCH[i1] + " " + File.GetCreationTime(dirsaRCH[i1]) + " - не обратываем" + ";\n");
                                    //}
                                }
                                else
                                {
                                    Console.WriteLine(@"нет совпадения файлов"); Logger.WriteLog(Event_, 0, @"Совпадений по имени не найдено");
                                    //Console.WriteLine(@"Имя файла:" + fileName);
                                    //for (int i1 = 0; i1 < dirsaRCH.Length; i1++)
                                    //{
                                    //    Console.Write("Имя файлов(а) в папке:" + dirsaRCH[i1]);
                                    //}
                                    newEmail.Attachments[i].SaveAsFile(@"C:\tkM\IN\" + newEmail.Attachments[i].FileName);
                                    Console.WriteLine(@"Файл сохранён с названием: " + newEmail.Attachments[i].FileName + " По пути:" + @"C:\tkM\IN\"); // выводим инфу об успешно копировании файла
                                    Logger.WriteLog(Event_, 0, @"Файл сохранён с названием: " + newEmail.Attachments[i].FileName + " По пути:" + @"C:\tkM\IN\");
                                }

                                //    {
                                Console.WriteLine(@"Обрабатываю письмо как прочитанное");
                                Logger.WriteLog(Event_, 0, @"Обрабатываю письмо как прочитанное");

                                System.Threading.Thread.Sleep(1000);
                                if (newEmail.UnRead) // пометить письмо как прочитанное
                                {
                                    newEmail.UnRead = false;
                                    newEmail.Save();
                                }

                                /********батники на IN************/
                                FileM.ProcManage(batInPutty1, pathBat, descrBatI3);
                                FileM.ProcManage(batInPutty2, pathBat, descrBatI4);
                                /********************/
                                string[] dirIN = Directory.GetFiles(@"C:\tkM\IN");
                                foreach (string d in dirIN)
                                {
                                    FileM.MoveReplaceFile(d, d.Replace("IN", "ARCH"));
                                }

                                Console.WriteLine(@"Завершаю работу");

                                //}
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Нет писем с вложением");
                    }
                }
            }
            catch (System.Exception ex)
            {
                string errorInfo = (string)ex.Message
                                   .Substring(0, 11);
                Console.WriteLine(errorInfo);
                if (errorInfo == "Cannot save")
                {
                    Console.WriteLine(@"Create Folder C:\IN");
                }
            }

            //////////выход из приложения
            oNS.Logoff();
            //oInbox = null;
            oNS  = null;
            oApp = null;
            //Console.ReadKey(); //Удалить все чтения ввода с консоли, для автоматической работы
            Logger.Flush();
            Console.WriteLine($"Закончили обработку в {DateTime.Now} " +
                              $"\nСледующий запуск приложения в {DateTime.Now.Add(TimeSpan.FromMinutes(5))} ");
            System.Threading.Thread.Sleep(15000);


            goto repiat;
        }
示例#2
0
        static void Main(string[] args)
        {
            //Outlook.Application application; //
            Outlook._NameSpace nameSpace;
            Outlook.MAPIFolder folderInbox;
            //////////////////////////////////
            //Microsoft.Office.Interop.Outlook._Folders oFolders;
            ///////////////1 модуль отправки файлов///////////////////
            string[] dirs;
            dirs = Directory.GetFiles(@"C:\tkM\OUT");                           //дирректория - откуда берём файл
            String dirs1 = Directory.GetFiles(@"C:\tkM\OUT").Length.ToString(); //если в папке out что то есть то отправляем письмо

            for (int i = 0; i <= dirs.Length + 1; i++)                          //для отправки 1 письмо + 1 файл
            {
                if (Convert.ToInt32(dirs1) > 0)
                {
                    //string dirArch = "C://OUT//ARCH//";
                    try
                    {
                        //тело отправляемого сообщения


                        Outlook._Application _app = new Outlook.Application();
                        Outlook.MailItem     mail = (Outlook.MailItem)_app.CreateItem(Outlook.OlItemType.olMailItem);
                        mail.To         = "*****@*****.**";               //"*****@*****.**";
                        mail.Subject    = "test1567";                              // тема
                        mail.Body       = "This is test message1156711";           //текст письма
                        mail.Importance = Outlook.OlImportance.olImportanceNormal; //какае то нужная вещь


                        foreach (string s in dirs)
                        {
                            try
                            {
                                Console.WriteLine(s);
                                mail.Attachments.Add(s);                   //добавляем вложения в письмо - возможно добавить сразу все вложения
                                File.Move(s, s.Replace("OUT", "OUTaRCH")); //После успешного прикрепления файла, переносим их в папку C:\ARCH
                                ((Outlook._MailItem)mail).Send();          //отправляем письмо
                                Console.WriteLine("Файл отправлен в ТК");  // если все хорошо, то выдаём в консоль сообщение
                                break;                                     // выхожу из цикла, что бы реализовать фичу 1 фал = 1 письмо, и так сойдёт :) рефакторинг потом
                            }
                            catch (System.Exception ex)
                            {
                                Console.WriteLine(ex.Message);
                                Console.WriteLine("С таким именем файла уже отправлялось\n" + "Перемещаю файл в папку Bad");
                                FileM.MoveReplaceFile(s, s.Replace("OUT", "Bad")); //прописываю каталог C:\tkM\Bad так быстрее не люблю много переменных
                                System.Threading.Thread.Sleep(1000);               //спим 1000 мс что б увидеть работу кода
                                Console.ReadKey();
                            }
                        }
                        _app = null; //убиваем ссылки на экземпляр класса
                        mail = null;

                        //Console.Read();
                    }
                    catch
                    {
                        Console.WriteLine("Что то пошло не так"); // если какае то бага то пишем это сообщение
                        Console.WriteLine("Не удалось отправить файлы, переходим к приёму файлов нажми любую клавишу");
                        System.Threading.Thread.Sleep(1000);
                        goto importStart; //если модуль отправки не отработал то программа переходит к модулю чтения сообщений
                    }
                    ////////////////////////////Чтение сообщений и копирование вложений///////////////////////////////////////////
                }
                else
                {
                    Console.WriteLine("Файлов для отправки нет"); break;
                }                                         //если нет файлов во вложении то выходим из цикла
                Console.ReadKey();
                dirs = Directory.GetFiles(@"C:\tkM\OUT"); //присваивание переменной с каждой итерацией цикла для обновления данных в массиве
                System.Threading.Thread.Sleep(1000);
            }
importStart:
            Outlook.Application oApp = new Outlook.Application();    // создали новый экземпляр
            Outlook.NameSpace oNS = oApp.GetNamespace("MAPI");

            //Это кусорк для чтения входящих сообщений для теста и понимания как это работает(раюотаем из папки входящие)
            oNS.Logon(Missing.Value, Missing.Value, false, true);
            Outlook.MAPIFolder oInbox = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

            for (int x = 1; x <= oInbox.Items.Count; x++)
            {
                if (oInbox.Items[x] is MailItem)
                {
                    //Выводим Имя отправителя
                    Console.WriteLine(oInbox.Items[x].SenderName + "\n" + "--------------------------------------------" + "\n");
                }
            }
            nameSpace = oApp.GetNamespace("MAPI");
            object missingValue = System.Reflection.Missing.Value;

            folderInbox = nameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);                        //Outlook.OlDefaultFolders.olFolderInbox
                                                                                                                     //количество не прочитанных писем в папке Входящие (Inbox)
            Outlook.MAPIFolder rootFolder      = nameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); //получаем доступ к папке входящие
            Outlook.MAPIFolder processedFolder = null;                                                               //processedFolder это экземпляр класса который выбирает нужную папку
            foreach (Outlook.MAPIFolder folder in rootFolder.Folders)                                                // ищем циклом папку в OUTLOOK
            {
                if (folder.Name == "IN")                                                                             //берем из папки IN
                {
                    processedFolder = folder;                                                                        // выбираю папку с которой будем работать(в OUTLOOK нужно создать правило, что бы все вообщения от почты ТК переносились в папку IN, которую мы заранее создаём в OUTLOOK)
                    break;
                }
            }


            Outlook.Items unreadItems = processedFolder.Items.Restrict("[Unread]=true");           // работаем с данной папкой и ищем не прочитанные письма
            Console.WriteLine("Непрочитанных писем в папке in = " + unreadItems.Count.ToString()); // выдать в консоль колличество непрочитанных сообщений

            //////////здесь вываодим в консоль все данные непрочитанные письма в папке in    можно заккоментить/////////////////////////
            StringBuilder str = new StringBuilder();     //читаем текст и данные письма выыодим в консоль не обязательно, но можно оставить для логирования

            try
            {
                DateTime sysdate_ = DateTime.Now;
                foreach (Outlook.MailItem mailItem in unreadItems)
                {
                    str.AppendLine("----------------------------------------------------");
                    str.AppendLine("SenderName: " + mailItem.SenderName);
                    str.AppendLine("To: " + mailItem.To);
                    str.AppendLine("CC: " + mailItem.CC);
                    str.AppendLine("Subject: " + mailItem.Subject);
                    str.AppendLine("Body: " + mailItem.Body);
                    str.AppendLine("CreationTime: " + mailItem.CreationTime);
                    str.AppendLine("ReceivedByName: " + mailItem.ReceivedByName);
                    str.AppendLine("ReceivedTime: " + mailItem.ReceivedTime);
                    str.AppendLine("UnRead: " + mailItem.UnRead);
                    str.AppendLine(mailItem.ReceivedTime.Date.ToShortDateString() + sysdate_.ToShortDateString());
                    str.AppendLine("----------------------------------------------------");
                    Console.WriteLine(str.ToString());
                }
            }
            catch (System.Exception ex)     // если письмо бракованное то пробуем ещё раз
            {
                //System.Threading.Thread.Sleep(300); //пауза

                //goto repeatReadMail;

                string errorInfo = (string)ex.Message.Substring(0, 11);
                Console.WriteLine(errorInfo);    // вывести любую ошибку
                if (errorInfo == "Cannot save")
                {
                    Console.WriteLine(@"Create Folder C:\TestFileSave");
                }
                goto repeatReadAndAddAttachmentIsMail;     // перейти к чтению и вытаскиванию вложения в случае ошибки здесь
            }
            //foreach (Outlook.MailItem mail in unreadItems) //пометить как прочитанное реализация не удалять
            //{
            //    if (mail.UnRead)
            //    {
            //        mail.UnRead = false;
            //        mail.Save();
            //    }
            //}
            //////////////////Вытаскивание вложение и пометить письмо как прочитанное
repeatReadAndAddAttachmentIsMail:
            Outlook.Items inBoxItems = processedFolder.Items.Restrict("[Unread]=true");

            Outlook.MailItem newEmail = null;
            try
            {
                foreach (object collectionItem in inBoxItems)
                {
                    newEmail = collectionItem as Outlook.MailItem;
                    DateTime sysdate_ = DateTime.Now;                                                                       //дата текущий день
                    //mailItem.ReceivedTime.Date.ToShortDateString() + sysdate_.ToShortDateString();
                    if (newEmail != null && newEmail.ReceivedTime.Date.ToShortDateString() == sysdate_.ToShortDateString()) //проарка на дату файла
                    {
                        if (newEmail.Attachments.Count > 0)
                        {
                            for (int i = 1; i <= newEmail.Attachments.Count; i++)
                            {
                                string   fileName   = newEmail.Attachments[i].FileName; Console.WriteLine(@"Имя файла:" + fileName);
                                string[] dirsINaRCH = Directory.GetFiles(@"C:\tkM\INaRCH\");//создадим перепенную с именами файлов в папке IN или IN_ARCH
                                if (FileM.ValueOf(dirsINaRCH, fileName) != "noDuble")
                                {
                                    Console.WriteLine(@"Найдено совпаление  с файлом: " + fileName + "\n Список файлов в папке:");

                                    for (int i1 = 0; i1 < dirsINaRCH.Length; i1++)
                                    {
                                        Console.Write(dirsINaRCH[i1] + " " + File.GetCreationTime(dirsINaRCH[i1]) + ";\n");
                                    }
                                }
                                else
                                {
                                    Console.WriteLine(@"нет совпадения файлов");
                                    //Console.WriteLine(@"Имя файла:" + fileName);
                                    //for (int i1 = 0; i1 < dirsINaRCH.Length; i1++)
                                    //{
                                    //    Console.Write("Имя файлов(а) в папке:" + dirsINaRCH[i1]);
                                    //}
                                    newEmail.Attachments[i].SaveAsFile(@"C:\tkM\IN\" + newEmail.Attachments[i].FileName);
                                    Console.WriteLine(@"Файл сохранён с названием: " + newEmail.Attachments[i].FileName + " По пути:" + @"C:\tkM\IN\"); // выводим инфу об успешно копировании файла
                                }

                                //    {
                                Console.WriteLine(@"Обрабатываю письмо как прочитанное");
                                System.Threading.Thread.Sleep(1000);
                                if (newEmail.UnRead) // пометить письмо как прочитанное
                                {
                                    newEmail.UnRead = false;
                                    newEmail.Save();
                                }
                                Console.WriteLine(@"Завершаю работу");
                                //}
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Нет писем с вложением");
                    }
                }
            }
            catch (System.Exception ex)
            {
                string errorInfo = (string)ex.Message
                                   .Substring(0, 11);
                Console.WriteLine(errorInfo);
                if (errorInfo == "Cannot save")
                {
                    Console.WriteLine(@"Create Folder C:\IN");
                }
            }

            //////////выход из приложения
            oNS.Logoff();
            oInbox = null;
            oNS    = null;
            oApp   = null;
            //Console.ReadKey(); //Удалить все чтения ввода с консоли, для автоматической работы
            System.Threading.Thread.Sleep(1000);
        }