private void Email_einplanen(Email email) { LogAdapter.Log(" {0} -> {1}: {2}", email.Von, email.An, email.Betreff); if (email.An.StartsWith("throwexception")) throw new ApplicationException("Fehler erzwungen zu Testzwecken!"); _domain.Termin_berechnen(email, einplanung => { LogAdapter.Log(" eingeplant für {0}", einplanung.Termin); _wiedervorlagespeicher.Eintragen(einplanung); }, fehlermeldung => Fehler_bei_Einplanung(fehlermeldung, email)); }
public void Senden(Email email) { var msg = new MailMessage(new MailAddress(email.Von, "Email-Wiedervorlage"), new MailAddress(email.An)) { Subject = email.Betreff, Body = email.Text, IsBodyHtml = true }; msg.Headers.Add("In-Reply-To", email.MessageId); _smtp.Send(msg); }
public void Termin_berechnen(Email email, Action<Einplanung> beiErfolg, Action<string> beiFehler) { try { var countdown = Countdown_bestimmen(email.AnWiedervorlage); var termin = email.VersandzeitpunktUTC.ToLocalTime().Add(countdown); beiErfolg(new Einplanung { Id = Guid.NewGuid().ToString(), Termin = termin, AngelegtAm = DateTime.Now, Email = email }); } catch (Exception ex) { beiFehler(ex.Message); } }
private static void Absender_über_Fehler_informieren(string fehlermeldung, Email email) { var text = string.Format("<b>Fehler bei der Einplanung zur Wiedervorlage: {0}<br/>Email vom {1} UTC. Empfänger: {2}, Wiedervorlage: {3}</b><br/><hr/>{4}", fehlermeldung, email.VersandzeitpunktUTC, email.An, email.AnWiedervorlage, email.Text.Replace("\n", "<br/>")); var fehlerEmail = new Email { MessageId = email.MessageId, Von = "no-reply-wiedervorlage@" + _config["mailserver_domain"], An = email.Von, Betreff = email.Betreff, Text = text }; _sendmail.Senden(fehlerEmail); }
internal Einplanung Eintrag_laden(string filename) { var ci = CultureInfo.CreateSpecificCulture("de-DE"); using (var sr = new StreamReader(filename)) { var versionsnr = sr.ReadLine(); if (versionsnr != VERSIONSNR) throw new InvalidOperationException(string.Format("Ungültige Versionsnr. der Einplanung: {0}, {1}", versionsnr, filename)); var einplanung = new Einplanung { Id = sr.ReadLine(), Termin = DateTime.Parse(sr.ReadLine(), ci), AngelegtAm = DateTime.Parse(sr.ReadLine(), ci), }; var email = new Email { MessageId = sr.ReadLine(), VersandzeitpunktUTC = DateTime.Parse(sr.ReadLine(), ci), An = sr.ReadLine(), AnWiedervorlage = sr.ReadLine(), Von = sr.ReadLine(), Betreff = sr.ReadLine(), Text = sr.ReadToEnd() }; einplanung.Email = email; return einplanung; } }