Пример #1
0
        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));
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
        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;
            }
        }