Example #1
0
 private void OberflächeDeaktivieren(bool Aktivieren)
 {
     if (Aktivieren)
     {
         CSVPfadSuchenButton.Invoke(new Action <bool>(s => { CSVPfadSuchenButton.Enabled = s; }), true);
         TestEmailAdresseTextBox.Invoke(new Action <bool>(s => { TestEmailAdresseTextBox.Enabled = s; }), true);
         if (AdressePrüfen(TestEmailAdresseTextBox.Text))
         {
             TestButton.Invoke(new Action <bool>(s => { TestButton.Enabled = s; }), true);
         }
         StartenButton.Invoke(new Action <bool>(s => { StartenButton.Enabled = s; }), true);
         StatusLabel.Invoke(new Action <string>(s => { StatusLabel.Text = s; }), "Status: 0/0 versendet ETA: 0m 0s");
         Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Minimum = s; }), 0);
         if (!ReferenceEquals(AlleMails, null))
         {
             Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Maximum = s; }), AlleMails.Length);
         }
         else
         {
             Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Maximum = s; }), 1);
         }
         Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Value = s; }), 0);
     }
     else
     {
         CSVPfadSuchenButton.Invoke(new Action <bool>(s => { CSVPfadSuchenButton.Enabled = s; }), false);
         TestEmailAdresseTextBox.Invoke(new Action <bool>(s => { TestEmailAdresseTextBox.Enabled = s; }), false);
         TestButton.Invoke(new Action <bool>(s => { TestButton.Enabled = s; }), false);
         StartenButton.Invoke(new Action <bool>(s => { StartenButton.Enabled = s; }), false);
     }
 }
Example #2
0
        private void TestButton_Click(object sender, EventArgs e)
        {
            try
            {
                new Thread(delegate()
                {
                    OberflächeDeaktivieren(false);
                    var TestEmailAnzahl = 3;
                    var Fehler          = string.Empty;
                    if (AlleMails.Length < 3)
                    {
                        TestEmailAnzahl = AlleMails.Length;
                    }
                    if (!AlleMailsÜberprüfen())
                    {
                        MessageBox.Show("Es sind bei der Überprüfung der Daten Fehler vorgekommen. Diese wurden in folgende Datei geschrieben:\n\n" + ProgrammPfad + @"\EmailAdressenFehler.txt" + "\n\nBitte beheben Sie diese Fehler zuerst. Es wurden keine Emails versandt.");
                    }
                    else
                    {
                        Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Maximum = s; }), TestEmailAnzahl);
                        {
                            Parallel.For(0, TestEmailAnzahl, new ParallelOptions {
                                MaxDegreeOfParallelism = TestEmailAnzahl
                            }, i =>
                            {
                                AlleMails[i].TextBearbeiten(this);
                            });
                            for (int i = 0; i < TestEmailAnzahl; i++)
                            {
                                Fehler = AlleMails[i].EmailSenden(SMTPServerIP, TestEmailAdresseTextBox.Text, true);
                                while (!Fehler.Equals(string.Empty) && (i != TestEmailAnzahl))
                                {
                                    switch (Fehler)
                                    {
                                    case "1":
                                        WarteAnimation(i + 1, TestEmailAnzahl);
                                        break;

                                    default:
                                        MessageBox.Show("Fehler: " + Fehler);
                                        i = TestEmailAnzahl;
                                        break;
                                    }
                                    Fehler = AlleMails[i].EmailSenden(SMTPServerIP, TestEmailAdresseTextBox.Text, true);
                                }
                                if (i != TestEmailAnzahl)
                                {
                                    StatusLabel.Invoke(new Action <string>(s => { StatusLabel.Text = s; }), string.Format("Status: {0}/{1} versendet", i + 1, TestEmailAnzahl));
                                    Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Value = s; }), i + 1);
                                }
                            }
                        }
                    }
                    OberflächeDeaktivieren(true);
                    GC.Collect();
                }).Start();
            }
            catch (Exception ex)
            {
                Program.MeldeFehler(ex.Message + "\n" + ex.StackTrace);
                Environment.Exit(1);
            }
        }
Example #3
0
 private void StartenButton_Click(object sender, EventArgs e)
 {
     try
     {
         if (!BereitsVersendet || (BereitsVersendet && (MessageBox.Show("Sie haben die Emails schon einmal versendet. Sind Sie sich sicher, dass Sie das noch einmal tun möchten?", "Bestätigung", MessageBoxButtons.YesNo) == DialogResult.Yes)))
         {
             new Thread(delegate()
             {
                 OberflächeDeaktivieren(false);
                 AlleZeiten = new List <long>();
                 if (!AlleMailsÜberprüfen())
                 {
                     MessageBox.Show("Es sind bei der Überprüfung der Daten Fehler vorgekommen. Diese wurden in die Datei:\n\n" + ProgrammPfad + @"\EmailAdressenFehler.txt" + "\n\ngeschrieben. Bitte beheben Sie diese Fehler zuerst. Es wurden keine Emails versandt.");
                 }
                 else
                 {
                     var GefundeneFehler = new List <string>();
                     var Parallelität    = 10;
                     if (AlleMails.Length < 10)
                     {
                         Parallelität = AlleMails.Length;
                     }
                     ;
                     Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Minimum = s; }), 0);
                     Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Maximum = s; }), AlleMails.Length);
                     int ProcessedEmailCount = 0;
                     for (int i = 0; i < AlleMails.Length; i++)
                     {
                         var CurWatch = new Stopwatch();
                         CurWatch.Start();
                         AlleMails[i].TextBearbeiten(this);
                         CurWatch.Stop();
                         StatusLabel.Invoke(new Action <string>(s => { StatusLabel.Text = s; }), string.Format("Status: {0}/{1} vorbereitet {2}", ProcessedEmailCount, AlleMails.Length, ETABerechnen(CurWatch.ElapsedMilliseconds / Parallelität, AlleMails.Length - 1 - ProcessedEmailCount)));
                         Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Value = s; }), ProcessedEmailCount);
                         Interlocked.Increment(ref ProcessedEmailCount);
                         if (i % 50 == 0)
                         {
                             GC.Collect();
                         }
                     }
                     AlleZeiten       = new List <long>();
                     var Watch        = new Stopwatch();
                     var Rückgabewert = string.Empty;
                     for (int i = 0; i < AlleMails.Length; i++)
                     {
                         Watch.Restart();
                         Rückgabewert = AlleMails[i].EmailSenden(SMTPServerIP, string.Empty, false);
                         while (Rückgabewert == "1")
                         {
                             Rückgabewert = AlleMails[i].EmailSenden(SMTPServerIP, string.Empty, false);
                             WarteAnimation(i + 1, AlleMails.Length);
                             Watch.Reset();
                         }
                         if (!Rückgabewert.Equals(string.Empty))
                         {
                             GefundeneFehler.Add("Zeile: " + (i + 2).ToString() + ", Spalte: Empfänger, Wert: " + AlleMails[i].Empfänger + ", Ursache: " + Rückgabewert);
                         }
                         Watch.Stop();
                         StatusLabel.Invoke(new Action <string>(s => { StatusLabel.Text = s; }), string.Format("Status: {0}/{1} versendet {2}", i + 1, AlleMails.Length, ETABerechnen(Watch.ElapsedMilliseconds, AlleMails.Length - 1 - i)));
                         Ladebalken.Invoke(new Action <int>(s => { Ladebalken.Value = s; }), i + 1);
                         if (i % 30 == 0)
                         {
                             GC.Collect();
                         }
                     }
                     if (File.Exists(ProgrammPfad + @"\EmailAdressenFehler.txt"))
                     {
                         File.Delete(ProgrammPfad + @"\EmailAdressenFehler.txt");
                     }
                     if (GefundeneFehler.Count > 0)
                     {
                         File.WriteAllLines(ProgrammPfad + @"\EmailAdressenFehler.txt", GefundeneFehler);
                         MessageBox.Show("Es sind beim Versand der Emails Fehler vorgekommen. Diese wurden in folgende Datei geschrieben:\n\n" + ProgrammPfad + @"\EmailAdressenFehler.txt" + "\n\nAlle anderen Emails wurden erfolgreich verschickt.");
                     }
                     else
                     {
                         MessageBox.Show("Vorgang ohne Fehler abgeschlossen.");
                     }
                     BereitsVersendet = true;
                 }
                 OberflächeDeaktivieren(true);
                 GC.Collect();
             }).Start();
         }
     }
     catch (Exception ex)
     {
         Program.MeldeFehler(ex.Message + "\n" + ex.StackTrace);
         Environment.Exit(1);
     }
 }