コード例 #1
0
        /// <summary>
        /// отложенная отправка почты
        /// </summary>
        void SendEmailsScheduled(object obj)
        {
            SchedulerClass sc         = new SchedulerClass(MailSubject, MailBody, ListEmails());
            TimeSpan       tsSendTime = sc.GetSendTime(SendTime);

            if (tsSendTime == new TimeSpan())
            {
                MessageBox.Show("Некорректный формат даты");
                return;
            }

            DateTime dtSendDateTime = (SendDate != new DateTime() ? SendDate: DateTime.Today).Add(tsSendTime);

            if (dtSendDateTime < DateTime.Now)
            {
                MessageBox.Show("Дата и время отправки писем не могут быть раньше, чем настоящее время");
                return;
            }

            if (FieldsIsEmpty())
            {
                return;
            }
            EmailSenderCreate(obj as SecureString);
            sc.SendMails(dtSendDateTime, emailSender);
            MessageBox.Show($"Отправка писем запланирована на {dtSendDateTime}");
        }
コード例 #2
0
 public void TestSendTask()
 {
     Debug.WriteLine($"Ожидаем {DateTime.Now:F}...."); 
     Debug.WriteLine($"ОТПРАВКА {DateTime.Now:F}....");
     var mailService = new DebugMailService();
     var sc = new SchedulerClass();
     sc.SendTask(senderTasks, mailService);
     var countExpected = 20;
     var countSend = senderTasks.Sum(x => x.IsSendEnd ? 1 : 0);
     Assert.AreEqual(countExpected, countSend);
 }
コード例 #3
0
 public static void TestInitialize(TestContext context)
 {
     Debug.WriteLine("Test Initialize");
     sc = new SchedulerClass();
     ts = new TimeSpan();             // возвращаем в случае ошибочно введенного времени
     sc.DatesEmailTexts = new Dictionary <DateTime, string>()
     {
         { new DateTime(2016, 12, 24, 22, 0, 0), "text1" },
         { new DateTime(2016, 12, 24, 22, 30, 0), "text2" },
         { new DateTime(2016, 12, 24, 23, 0, 0), "text3" }
     };
 }
コード例 #4
0
 public void TestInitialize()
 {
     Debug.WriteLine("Test Initialize");
     sc = new SchedulerClass();
     ts = new TimeSpan();
     //sc.DatesEmailTexts = new Dictionary<DateTime, string>()
     //{
     //    {new DateTime(2016, 12, 24, 22, 0, 0), "text1"},
     //    {new DateTime(2016, 12, 24, 22, 30, 0), "text2"},
     //    {new DateTime(2016, 12, 24, 23, 0, 0), "text3"}
     //};
 }
コード例 #5
0
        public static void TestInitialize(TestContext context)
        {
            Debug.WriteLine("Test Initialize");

            sc = new SchedulerClass();
            ts = new TimeSpan();                    // Возвращается в случае ошибочно введённого времени

            sc.DatesEmailTexts = new System.Collections.Generic.Dictionary <DateTime, string>()
            {
                [new DateTime(2016, 12, 24, 22, 0, 0)]  = "text1",
                [new DateTime(2016, 12, 24, 22, 30, 0)] = "text2",
                [new DateTime(2016, 12, 24, 23, 0, 0)]  = "text3"
            };
        }
コード例 #6
0
        /// <summary>
        /// отложенная отправка почты
        /// </summary>
        void SendEmailsScheduled(object obj)
        {
            if (SendMails.Count == 0)
            {
                MessageBoxShow("Для запланированной отправки добавьте хотя бы одно письмо");
                return;
            }
            if (!IsLoginFill())
            {
                return;
            }
            if (SendDatesCorrect() != null)
            {
                MessageBoxShow($"Задайте для письма {SendDatesCorrect()} правильную дату и время \n(дата и время отправки не может быть раньше, чем настоящее время)");
                return;
            }

            SchedulerClass sc = new SchedulerClass(ListEmails());

            sc.MessageAfterOneSend  += MessageBoxShow;
            sc.MessageAfterSendAll  += MessageBoxShow;
            sc.MessageAfterPlanning += MessageBoxShow;

            try
            {
                //заполняем словарь
                sc.DatesEmailTexts = SendMails.ToDictionary(mail => mail.SendDateTime, mail => mail.MailText);
                #region
                //так тоже можно заполнить словарь, но тогда нет обращения к сеттеру словаря, где настроена сортировка:
                //foreach (ListViewItemScheduler mail in SendMails)
                //{
                //    if (mail.SendDateTime < DateTime.Now)
                //    {
                //        MessageBoxShow($"Для письма {mail.SendDateTime} заданы не верные дата и время \n(дата и время отправки писем не могут быть раньше, чем настоящее время). \nДанное письмо не будет отправлено.");
                //        continue;
                //    }
                //    sc.DatesEmailTexts.Add(mail.SendDateTime, mail.MailText);
                //}
                #endregion
            }
            catch (ArgumentException)
            {
                MessageBoxShow("Нельзя запланировать два письма на одинаковое время");
                return;
            }

            EmailSenderCreate(obj);
            sc.SendMails(_emailSender);
        }
コード例 #7
0
ファイル: MainWindow.xaml.cs プロジェクト: ld42ql/MailSender
        private void Send()
        {
            var sc         = new SchedulerClass();
            var tsSendTime = sc.GetSendTime(tbTimePicker.Text);

            if (tsSendTime == new TimeSpan())
            {
                MessageBox.Show("Некорректный формат даты");
                return;
            }
            var dtSendDateTime = (cldSchedulDateTimes.SelectedDate ??
                                  DateTime.Today).Add(tsSendTime);

            if (dtSendDateTime < DateTime.Now)
            {
                MessageBox.Show("Дата и время отправки писем не могут быть раньше, чем настоящее время");
                return;
            }
            var emailSender = new EmailSendServiceClass(cbSenderSelect.Text,
                                                        cbSenderSelect.SelectedValue.ToString());

            sc.SendEmails(dtSendDateTime, emailSender, locator.Main.Emails);
        }
コード例 #8
0
ファイル: MainWindow.xaml.cs プロジェクト: VenenS/MailSender2
        private void BtnSend_Click(object sender, RoutedEventArgs e)
        {
            SchedulerClass sc         = new SchedulerClass();
            TimeSpan       tsSendTime = sc.GetSendTime(tbTimePicker.Text);

            if (tsSendTime == new TimeSpan())
            {
                MessageBox.Show("Некоректный формат даты");
                return;
            }
            DateTime dtSendTime = (cldSchedulDateTimes.SelectedDate ?? DateTime.Today).Add(tsSendTime);

            if (dtSendTime < DateTime.Now)
            {
                MessageBox.Show("Дата и время отправки не могут быть раньше, чем настоящее время!");
                return;
            }
            EmailSendServiceClass emailSender = new EmailSendServiceClass(cbSenderSelect.Text,
                                                                          cbSenderSelect.SelectedValue.ToString(), BodyPost.Text, SubjectPost.Text, cbSmtpSelect.Text,
                                                                          int.Parse(((KeyValuePair <string, int>)cbSenderSelect.SelectedItem).Value.ToString()));
            var locator = (ViewModelLocator)FindResource("Locator");

            sc.SendEmails(emailSender, locator.Main.Emails);
        }
コード例 #9
0
 public static void ClassInitialize(TestContext context)
 {
     Debug.WriteLine("Class Initialize");
     sc = new SchedulerClass(new List <string>());
     ts = new TimeSpan();
 }