Exemple #1
0
        private void button2_Click(object sender, EventArgs e)
        {
            //ProcessBarDiage pro = new ProcessBarDiage();
            //pro.Show();
            ProcessBar processBar = new ProcessBar();

            processBar.Show();
            Thread th = new Thread(new ThreadStart(SleepT));

            th.IsBackground = true;
            th.Start();
        }
        /// <summary>
        /// Получение данных из писем провайдеров
        /// </summary>
        public void GetDataFromProviderFiles()
        {
            string path = Globals.ThisWorkbook.Path + "\\MailFromProviders\\" + DateTime.Today.ToString("dd.MM.yyyy") + '\\';

            if (!Directory.Exists(path))
            {
                MessageBox.Show("Папка " + path + " отсутствует");
                return;
            }
            string[] files = Directory.GetFiles(path);
            if (files.Length == 0)
            {
                return;
            }

            ProcessBar pb = ProcessBar.Init("Сканирование вложений", files.Length, 1, "Получение данных провайдера");

            pb.Show();

            int i = 0;

            foreach (string file in files)
            {
                i++;
                FileInfo fileInfo = new FileInfo(file);
                if (pb.Cancel)
                {
                    break;
                }
                pb.Action($"Вложение {i} из {pb.Count} {fileInfo.Name} ");

                if (!file.Contains(".xls"))
                {
                    continue;
                }
                ReadMessageFile(file);
            }
            pb.Close();
        }
        /// <summary>
        /// Сохранение вложений в выбранных папках, полученные текущей датой
        /// </summary>
        public int SaveAttachments()
        {
            MessageDate messageDate = new MessageDate();

            messageDate.ShowDialog();
            if (messageDate.DialogResult != DialogResult.OK)
            {
                return(0);
            }
            //messageDate.date

            int count = 0;

            OutlookApp.Session.Logon();
            foreach (string folderName in FolderNames)
            {
                Outlook.Folder folder = GetFolder(folderName);
                if (folder == null)
                {
                    continue;
                }

                ProcessBar pb = Forms.ProcessBar.Init("Сканирование папки " + folder.Name, folder.Items.Count, 1, folder.Name);
                pb.Show();
                foreach (object item in folder.Items)
                {
                    if (pb.Cancel)
                    {
                        break;
                    }

                    if (!(item is Outlook.MailItem mail))
                    {
                        pb.Action();
                        continue;
                    }

                    pb.Action(mail.ReceivedTime.Date.ToString());
                    if (mail.Attachments.Count == 0)
                    {
                        continue;
                    }
                    if (mail.ReceivedTime.Date < messageDate.DateStart || mail.ReceivedTime.Date > messageDate.DateEnd)
                    {
                        continue;
                    }

                    string path = Globals.ThisWorkbook.Path + "\\MailFromProviders\\" + DateTime.Today.ToString("dd.MM.yyyy") + '\\';
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }

                    foreach (Outlook.Attachment attach in mail.Attachments)
                    {
                        if (!attach.FileName.Contains("xls"))
                        {
                            continue;
                        }
                        attach.SaveAsFile(path + attach.FileName);
                        count++;
                    }
                }
                pb.Close();
            }
            return(count);
        }