private void logdateiAnsehenToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (Properties.Settings.Default.neuesteDatei == "")
     {
         MessageBox.Show("Wählen Sie eine Serienbriefdatei oder ein Verzeichnis um zu Schritt 2 zu kommen.", "Monty Got A Raw Deal");
         return;
     }
     if (Properties.Settings.Default.absender == "" || Properties.Settings.Default.smtpServer == "" || Properties.Settings.Default.smtpPort == 0 || Properties.Settings.Default.mailPassword == "")
     {
         MessageBox.Show("Geben Sie die vollständigen eMail-Einstellungen ein.");
         return;
     }
     frmVorschau frm = new frmVorschau();
     frm.MdiParent = this;
     frm.WindowState = FormWindowState.Maximized;
     frm.Show();
 }
        private void vorschauToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (Properties.Settings.Default.neuesteDatei == "")
            {
                MessageBox.Show("Wählen Sie eine Serienbriefdatei oder ein Verzeichnis um zu Schritt 2 zu kommen.", "Coelina");
                return;
            }

            frmVorschau frm = new frmVorschau();
            frm.MdiParent = this;
            frm.WindowState = FormWindowState.Maximized;
            frm.Show();
        }
        private void btnWeiterZu2_Click(object sender, EventArgs e)
        {
            // Ein neuer Ordner wird erzeugt, der die zerstückelte PDF-Datei aufnimmt.

            try
            {
                NeuePdfDatei.erstelleOrdner();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Fehler: \n Es fehlt die Berechtigung einen Ordner anzulegen, der sodann die Einzelseiten aufnimmt.\n\n"+ex, "Coelina");
                return;
            }

            // Die Datei wird zerlegt.

            NeuePdfDatei.zerlegePdfInEinzelseiten(NeuePdfDatei.VollständigerPfadZurDatei);

            string name;

            try
            {
                FileInfo file = new FileInfo(Properties.Settings.Default.neuesteDatei);
                name = file.Name.Substring(0, file.Name.LastIndexOf("."));
            }
            catch (Exception ex)
            {
                MessageBox.Show("Fehler: \n\nSie müssen eine PDF-Datei auswählen.\n\n" + ex, "Coelina");
                return;
            }

            // Es wird ein Reader für die PDF-Datei erzeugt.

            try
            {
                PdfReader reader = new PdfReader(Properties.Settings.Default.neuesteDatei);

                // Die Anzahl der Seiten der PDF-Datei wird ermittelt.

                int n = reader.NumberOfPages;

                // Die Eigenschaft wird angepasst.

                NeuePdfDatei.AnzahlSeiten = n;
                int digits = 1 + (n / 10);

                // Progressbar einstellen.

                progressBar1.Visible = true;
                progressBar1.Minimum = 1;
                progressBar1.Maximum = n + 1;
                progressBar1.Value = 1;
                progressBar1.Step = 1;
                //progressBar1.PerformStep();

                Document document;
                int pagenumber;
                string filename;

                // Für jede Einzelseite wird mindestens ein Nachrichtenobjekt angelegt.

                for (int i = 0; i < n; i++)
                {
                    pagenumber = i + 1;

                    filename = pagenumber.ToString();
                    while (filename.Length < digits) filename = "0" + filename;
                    filename = "_" + filename + ".pdf";
                    filename = name + filename;

                    // Ein document-Objekt wird erzeugt.

                    document = new Document(reader.GetPageSizeWithRotation(pagenumber));

                    // Ein Writer wird für das document erstellt.

                    PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(frmSerienbriefdateiWählen.NeuePdfDatei.Unterverzeichnis + "\\" + filename, FileMode.Create));

                    // Öffnen des Dokuments.

                    document.Open();
                    PdfContentByte cb = writer.DirectContent;
                    PdfImportedPage page = writer.GetImportedPage(reader, pagenumber);
                    int rotation = reader.GetPageRotation(pagenumber);
                    if (rotation == 90 || rotation == 270)
                    {
                        cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(pagenumber).Height);
                    }
                    else
                    {
                        cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
                    }

                    // Schließen des Dokuments.

                    document.Close();

                    List<string> empfängerMitDuplikaten = NeuePdfDatei.ReadPdfFile(NeuePdfDatei.Unterverzeichnis + "\\" + filename, Global.nral[cbxEmpfänger.SelectedIndex].DefinitionRegEx, Global.nral[cbxEmpfänger.SelectedIndex].Begrenzer1, Global.nral[cbxEmpfänger.SelectedIndex].Begrenzer2, cbxEmpfänger.SelectedIndex);

                    // Duplikate werden entfernt, damit jeder Empfänger jede Seite nur 1x bekommt.

                    List<string> empfänger = empfängerMitDuplikaten.Distinct().ToList();

                    // Für jeden einzelnen Empfänger auf einer Seite wird ein Nachrichtenobjekt angelegt.

                    for (int j = 0; j < empfänger.Count(); j++)
                    {

                        // Falls die Alias-Funktionalität in den Einstellungen aktiv ist, wird nach allen Aliassen in Betreff und Body gesucht und entsprechend ersetzt.

                        string betreff = Properties.Settings.Default.betreff;
                        string body = Properties.Settings.Default.body;
                        string aliasKürzel = "";
                        string aliasName = "";
                        string alias1 = "";
                        string alias2 = "";
                        string alias3 = "";
                        string alias4 = "";

                        // Wenn ein Alias ausgewertet werden soll, muss der Alias erst in eine E-Mail-Adresse übersetzt werden.

                        if (cbxEmpfänger.SelectedIndex != 0)
                        {

                            empfänger[j] = Global.AliasMail.ermittleEmailAdresseAusEinemAlias(empfänger[j], cbxEmpfänger.SelectedIndex);

                            // Objekte mit ""-Wert werden entfernt.
                        }

                        //empfänger = empfänger.Where(x => x != null).ToList();

                        // Wenn der Alias in den Einstellungen aktiv geschaltet wurde, wird in Betreff und Body nach Alias gesucht und entsprechend ersetzt.

                        if (Properties.Settings.Default.AliasAktiv == true)
                        {
                            foreach (AliasKopfzeile a in Enum.GetValues(typeof(AliasKopfzeile)))
                            {
                                betreff = Global.AliasMail.AliasSuchenUndTextErsetzen(empfänger[j], betreff, "[" + a + "]");
                                body = Global.AliasMail.AliasSuchenUndTextErsetzen(empfänger[j], body, "[" + a + "]");
                            }
                            if (cbxEmpfänger.SelectedIndex == 0)
                            {
                                aliasKürzel = Global.AliasMail.AliasKürzelErmitteln(empfänger[j]);
                            }
                            aliasName = Global.AliasMail.AliasNameErmitteln(empfänger[j]);
                            alias1 = Global.AliasMail.Alias1Ermitteln(empfänger[j]);
                            alias2 = Global.AliasMail.Alias2Ermitteln(empfänger[j]);
                            alias3 = Global.AliasMail.Alias3Ermitteln(empfänger[j]);
                            alias4 = Global.AliasMail.Alias4Ermitteln(empfänger[j]);
                        }

                        // Jetzt wird ein neues Nachrichtenobjekt erzeugt.

                        // Nur, wenn tatsächlich eine gültige E-Mail-Adresse ermittelt werden kann, wird das Nachrichtenobjekt angelegt.
                        if (empfänger[j].Contains('@'))
                        {
                            Global.fNeueNachricht.Add(new Nachricht(Properties.Settings.Default.bcc, betreff, body, Properties.Settings.Default.cc, frmSerienbriefdateiWählen.NeuePdfDatei.Unterverzeichnis + "\\" + filename, empfänger[j], Properties.Settings.Default.attachment1, Properties.Settings.Default.attachment2, Properties.Settings.Default.attachment3, Properties.Settings.Default.mailPassword, Properties.Settings.Default.smtpPort, Properties.Settings.Default.smtpServer, Properties.Settings.Default.absender, aliasName, aliasKürzel, alias1, alias2, alias3, alias4));
                        }

                        progressBar1.PerformStep();
                    }
                }
            }
            catch (Exception ex)
            {
               string fehler = "Die Datei " + NeuePdfDatei.Name + " kann nicht gelesen werden.\nKann es sein, dass die Datei passwortgeschützt ist?\nHier geht es nicht weiter.";
               MessageBox.Show("Fehler: \n" + fehler + "\n\n" + ex, "Coelina");
               return;
            }

            // Nur, wenn die PDF-Datei existiert und die SMTP-Einstellungen gültig sind, geht es weiter.

            if (File.Exists(btnDateiAuswahl.Text) && Path.GetExtension(btnDateiAuswahl.Text) == ".pdf" && Global.fNeueNachricht.Count() > 0)
            {
                if (Properties.Settings.Default.MaileinstellungenKorrekt == true)
                {
                    frmVorschau frm2 = new frmVorschau();
                    // frm2 soll innerhalb des MDI-Containers öffnen. Also wird der Parent des aktuellen Forms an das nächste Form übergeben.
                    frm2.MdiParent = this.MdiParent;
                    frm2.Show();
                    this.Close();
                }
                else
                {
                    string fehler = "\n\nWechseln Sie zu den Einstellungen, um zuerst einen gültigen SMTP-Zugang einzurichten.\nAnschließend kehren Sie hierher zurück.";
                    MessageBox.Show("Fehler: \n" + fehler, "Coelina");
                    return;
                }
            }
            else
            {
                string fehler = "\nEs muss mindestens ein Empfänger ausgelesen werden können, um zum nächsten Schritt zu kommen.";
                MessageBox.Show("Fehler: \n" + fehler, "Coelina");
                return;
            }

            try
            {
                MailAddress m = new MailAddress(tbxCc.Text);
                Properties.Settings.Default.cc = tbxCc.Text;
            }
            catch
            {
                // Wenn die Textbox nicht leer und gleichzeitig nicht mit keiner gültigen Adresse gefüllt ist, dann wird die Zelle geleert
                if (tbxCc.Text != "")
                {
                    Properties.Settings.Default.cc = "";
                    tbxCc.Text = "";
                    string fehler = "\n\nDie CC-Adresse ist nicht gültig und wird ignoriert.";
                    MessageBox.Show("Fehler: \n" + fehler, "Coelina");
                }
            }

            Properties.Settings.Default.Save();

            try
            {
                MailAddress m = new MailAddress(tbxBcc.Text);
                Properties.Settings.Default.bcc = tbxBcc.Text;
            }
            catch
            {
                // Wenn die Textbox nicht leer und gleichzeitig nicht mit keiner gültigen Adresse gefüllt ist, dann wird die Zelle geleert.

                if (tbxBcc.Text != "")
                {
                    Properties.Settings.Default.bcc = "";
                    tbxBcc.Text = "";
                    string fehler = "\n\nDie BCC-Adresse ist nicht gültig und wird ignoriert.";
                    MessageBox.Show("Fehler: \n" + fehler, "Coelina");
                }
            }
            Properties.Settings.Default.Save();
        }