public Email Wiedervorlageemail_generieren(Einplanung einplanung)
        {
            var text = string.Format("<b>Wiedervorlage für Email vom {0} UTC. Empfänger: {1}, Wiedervorlage: {2}</b><br/><hr/>{3}",
                                      einplanung.Email.VersandzeitpunktUTC,
                                      einplanung.Email.An,
                                      einplanung.Email.AnWiedervorlage,
                                      einplanung.Email.Text.Replace("\n", "<br/>"));

            return new Email
            {
                MessageId = einplanung.Email.MessageId,
                Von = "no-reply-wiedervorlage@" + _config["mailserver_domain"],
                An = einplanung.Email.Von,
                Betreff = einplanung.Email.Betreff,
                Text = text
            };
        }
        public void Eintragen(Einplanung einplanung)
        {
            var filename = Dateiname_für_Einplanung(einplanung);
            if (File.Exists(filename)) return;

            var ci = CultureInfo.CreateSpecificCulture("de-DE");

            using (var sw = new StreamWriter(filename))
            {
                sw.WriteLine(VERSIONSNR);
                sw.WriteLine(einplanung.Id);
                sw.WriteLine(einplanung.Termin.ToString(ci));
                sw.WriteLine(einplanung.AngelegtAm.ToString(ci));

                sw.WriteLine(einplanung.Email.MessageId);
                sw.WriteLine(einplanung.Email.VersandzeitpunktUTC.ToString(ci));
                sw.WriteLine(einplanung.Email.An);
                sw.WriteLine(einplanung.Email.AnWiedervorlage);
                sw.WriteLine(einplanung.Email.Von);
                sw.WriteLine(einplanung.Email.Betreff);
                sw.Write(einplanung.Email.Text);
            }
        }
        private void Versenden(Einplanung einplanung)
        {
            LogAdapter.Log("  {0} vom {1}: {2}", einplanung.Email.Von, einplanung.AngelegtAm, einplanung.Email.Betreff);

            var email = _domain.Wiedervorlageemail_generieren(einplanung);
            _sendmail.Senden(email);
            _wiedervorlagespeicher.Löschen(einplanung);
        }
 public bool Ist_fällig(Einplanung einplanung)
 {
     return einplanung.Termin <= DateTime.Now;
 }
        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;
            }
        }
 public void Löschen(Einplanung einplanung)
 {
     File.Delete(Dateiname_für_Einplanung(einplanung));
 }
 private string Dateiname_für_Einplanung(Einplanung einplanung)
 {
     return Path.Combine(_path, string.Format("{0}-{1}.txt", einplanung.Email.MessageId, einplanung.Email.AnWiedervorlage));
 }