Tag 6 Idempotenz - ralfw/emailwiedervorlage GitHub Wiki

Email-Einplanungen sollen aus der Mailserver Inbox nach Speicherung gelöscht werden. Was aber, wenn bei der Verarbeitung ein Fehler passiert? Dann werden sie womöglich nicht aus der Inbox gelöscht. Bei der nächsten Runde, liegen sie also wieder zur Einspeicherung an (ALL) - oder werden gar nicht erst abgeholt, weil sie ja schon mal geladen wurden (UNSEEN).

Lösungsidee: Es werden immer alle Emails abgeholt. Und wenn die Einplanung erfolgreich ist, werden sie gelöscht.

Sollte etwas passieren, dann werden sie nicht gelöscht und liegen nächstes Mal wieder an. Das macht aber nichts, weil sie dann entweder endlich eingeplant werden. Oder weil festgestellt wird, dass sie schon eingeplant wurden. Das geschieht über die MessageId der Email. Unter der wird einfach die Einplanung gespeichert. (Bisher benutze ich dafür die Id der Einplanung.)

ToDo

  • Alle Inbox-Nachrichten abholen
  • Einplanungen mit MessageId
    • Keine Einplanung, wenn MessageId schon vorhanden. Sonst würde der Wiedervorlagetermin überschrieben, der ja bisher nach Abholungszeitpunkt berechnet wird.
  • Löschen von Inbox-Nachrichten -> Forschung: Wie geht das?