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(); }