Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie prüft man eine Mailbox? (https://www.delphipraxis.net/214195-wie-prueft-man-eine-mailbox.html)

wurzelsepp1 1. Dez 2023 14:41

Wie prüft man eine Mailbox?
 
Moin Gemeinde,

mal eine Frage, unabhängig vom Entwicklungssystem.

Um mein altes Hirn fit zu halten, baue ich einen Outlook-Ersatz (nicht kommerziell).

Leider habe ich grad ein Brett vom'm Kopf und komme nicht auf die Lösung der Frage, wie man eine Mailbox performant überprüft.

Zu den Daten:

Die Testmailbox hat 10.000 Mails. Die anzurufen, dauert eine Weile. Als Protokoll (oben) wird IMAP verwendet.
Wie das "echte" Oulook - und alle anderen Mailclients - soll nun regelmäßig nach neuen Mails geschaut werden und die bereits bekannten dahingehen geprüft werden, ob sie noch da sind, sich ihre Flags geändert haben usw.

Wie macht man das (logisch, nicht programmtechnisch) ohne jedesmal 10k abzurufen?

Irgendwie komme ich grad nicht drauf ..

Danke & ein schönes WE :)

himitsu 1. Dez 2023 15:19

AW: Wie prüft man eine Mailbox?
 
Nja, man kann erstmal nur die Header abfragen, ohne die Contents, der einzelnen Mails.
Anschließend fragt man nur noch die MailContents ab, welche man noch nicht hat.


Wenn ich mich Recht zu Glauben erinnere, dann kann man beim Abrufen quasi einen Filter mitgeben. (nur Mails, die neuer sind als "Zeitpunkt der letzten Abfrage").

mytbo 1. Dez 2023 15:29

AW: Wie prüft man eine Mailbox?
 
Zitat:

Zitat von wurzelsepp1 (Beitrag 1530309)
Die Testmailbox hat 10.000 Mails. Die anzurufen, dauert eine Weile. Als Protokoll (oben) wird IMAP verwendet.
Wie das "echte" Oulook - und alle anderen Mailclients - soll nun regelmäßig nach neuen Mails geschaut werden und die bereits bekannten dahingehen geprüft werden, ob sie noch da sind, sich ihre Flags geändert haben usw.

Weitere Hinweise in den Kommentaren des Quelltextes: Search for new IMAP EMails.

PS: Der im Quelltext erwähnte RFC 3501 ist obsolet, hier der Verweis zum Kapitel des Nachfolgers.

Bis bald...
Thomas

wurzelsepp1 2. Dez 2023 17:01

AW: Wie prüft man eine Mailbox?
 
Danke euch für die Hinweise. So einfach ist es aber leider nicht.

In der aktüllen Version (IMAP4 rev. 2) is zwar erwähnt, dass das "recent" -Flag weitgehend sinnlos ist, eine Alternative konnte ich in der Doku aber nicht finden.

Die gängige Idee, beim Abruf erst dort anzufangen, wo beim letzten Mal aufgehört wurde, ist auch nicht sinnvoll, da sich in dem Ordner ja auch altes Zeug geändert haben könnte. Mails werden ja schonmal verschoben, mit neuen Flags versehen under eben gelöscht. Das müsste der Cleint ja auch erfahren.

Falls hier also mal jemand mitliest, der schon mal darüber nachgedacht hat .. freue mich über jeden Tipp :)

Beach 3. Dez 2023 19:39

AW: Wie prüft man eine Mailbox?
 
Mein letzter direkter Kontakt zu IMAP ist bestimmt schon 2 Jahre her. Aber ich überlege gerade wie die von mir genutzten Webmailer meine EMails handhaben (habe so knapp 3000 Mails online stehen).

Eigentlich werden immer nur eine bestimmte Anzahl an Mails geladen. Wenn dann gescrollt wird, dann wird dynamisch nachgeladen. Es werden also normalerweise nie alle Mails gleichzeitig gehandelt.
Wenn E_Mails in andere Ordner verschoben werden, dann sollte das so vom Server ausgeliefert werden und muß ja nicht vom Client geordnet werden.

Eine Übersicht der genutzten Ordner und entsprechende Informationen darüber was bzw. wieviel Mails in den Ordner sind, wird wahrscheinlich vom Server geliefert. Dementsprechend kannst du die Header bzw den Mailbody dann nach bedarf abrufen.

Sind nur so ein paar Gedanken von mir zu dem Thema ohne Recht auf Richtigkeit.
Aber vielleicht hilft es trotzdem.

wurzelsepp1 4. Dez 2023 17:57

AW: Wie prüft man eine Mailbox?
 
Zitat:

Zitat von Beach (Beitrag 1530373)
Eigentlich werden immer nur eine bestimmte Anzahl an Mails geladen. Wenn dann gescrollt wird, dann wird dynamisch nachgeladen. Es werden also normalerweise nie alle Mails gleichzeitig gehandelt.

Danke, ja .. so in der Art würde ich das auch sehen. Allerdings sollen die Mails lokal gespeichert werden, um die auch offline bearbeiten zu können. Und das Problem mit der Änderung alter Nachrichten lässt sich damit nicht lösen, fürchte ich.

Ich habe jetzt vor, eine Verbindung zwischen Outlook und dem Server zu belauschen. Da funktioniert das ganze ja ganz gut. Vielleicht verstehe ich dann deren Prinzip ..

Beach 4. Dez 2023 20:11

AW: Wie prüft man eine Mailbox?
 
Wenn du aber alle Nachrichten lokal speicherst, dann wiederläuft das irgendwie der Idee von IMAP. Oder sagen wir mal, der Idee, die mir dazu in den Kopf kommt. Das trifft es wohl besser.

Ich nutze schon ewig kein lokales EMail mehr. Selbst auf der Arbeit nutze ich OWA. Selbst da sind oberflächlich nur die letzte 3 Tage direkt verfügbar. Wenn man frühere Konversationen sucht, ,dann muß auf dem Server gesucht werden.
Ich kann daher nicht wirklich nachvollziehen wie andere Programme die lokale Speicherung machen. Aber was mir dazu durch den Kopf geht, ist max die letzten z.B. 30 Tage lokal vorzuhalten. Die können relativ überschaubar synchronisiert werden.
Wenn es wirklich alle sein sollen, dann wäre eine Synchronisation nach Zeitplan oder manuell angestoßen denkbar. Mit dem Nachteil das diese sehr lange dauern kann. Aber dann sollte man wohl doch eher in Richtung POP3 nachdenken. Mit allen Vor und Nachteilen.

himitsu 4. Dez 2023 20:32

AW: Wie prüft man eine Mailbox?
 
Local Speichern:

* nur lokal speichern und online löschen
* oder einfach nur ein Cache, für die nächsten "schnellen" Abfragen/Aktionen

Ja, es gibt dann noch das eine Extrem (ohne zu speichern)
* jedes Mal alles komplett neu runterladen, wenn man in die Mails gucken will
* oder erszmal immer nur alle Header laden und die jeweilige Mail erst beim Reingucken

Beim Letzten kann man eben noch bissl sparen
* nicht alle Header laden, sondern nur die Neuen
* die letzten X runtergeladenen Mails in den Cache, für's erneute Angucken oder in den Mails Suchen.

Aber dann darfst du auch immer erstmal ein bissl warten, wenn du klickst, als wenn bereits alles lokal im Cache läge

arcticwolf 7. Dez 2023 08:19

AW: Wie prüft man eine Mailbox?
 
Liegen die 10.000 Mails alle im gleichen Ordner, also direkt im Posteingang (INBOX)?

Ich arbeite seit vielen Jahren mit Thunderbird, aktuell mit rund 30 Postfächern und bestimmt mehr als 100.000 Mails. Ich glaube Thunderbird macht das wie folgt:

Beim Start des Mail-Client (Thunderbird) wird nur der Posteingang der Postfächer abgerufen/abgeglichen. Je nach dem was in Thunderbird eingestellt ist, werden die (neuen) Mails dann sofort lokal herunter geladen oder eben auch nicht. Solange mit keinen anderen Mailclienst auf das gleiche Postfach zugegriffen wird, kann man erst einmal davon ausgehen, dass sich in den anderen Ordnern nichts geändert hat. Sobald ein anderer Ordner geöffnet (angeklickt) wird, werden die Mails (Header) dieses Ordners neu geladen und mit dem lokalen Bestand abgeglichen, falls durch einen anderen Mailclient eine Änderung stattgefunden hat.

Ansonsten kann man die anderen Ordern des Postfaches dann auch später im Hintergrund (eigene Threads) ja nach Bedarf abgleichen/aktualisieren.

Also mein Tipp wäre, die Mails zum Beispiel nach Tag, Monat oder Jahr in mehrere Ordern aufzuteilen und dann wie oben beschrieben immer nur den Posteingang, mit dann nicht ganz so vielen Mails abzugleichen. Wenn das nicht machbar oder gewünscht ist, könnte man das gleiche Prinzip anwenden und im ersten Schritt nur die Mails (Header) der letzten X Tage aus dem Posteingang abgleichen und dann später im Hintergrund den kompletten Abgleich machen.

wurzelsepp1 10. Dez 2023 20:09

AW: Wie prüft man eine Mailbox?
 
Danke euch erstmal für die Tipps. Ich werde erstmal auf der Outlook-Verbindung lauschen, um zu sehen wie die das machen. Da scheint es noch einen Trick zu geben. Ich melde mich dann, wenn ich das angesehen habe, nochmal.
Aktuell baue ich an dem Spamfilter. Das funktioniert dank Delphis Datenbank-Stärken um Lichtjahre besser als bei Outlook. :)

Zwei Anmerkungen noch:

Das mit dem Lesen der letzten 100 mache ich ja bereits. Das hilft aber nicht, wenn irgendjemand eine 3 Jahre alte Mail geändert oder verschoben hat, die 10.000 Positionen weiter hinten in der Liste ist.

Und zum Thema "warum offline?"
Wenn man oft mit der Bahn unterwegs ist und dort - wie üblich in D - kein Internet hat, ist es wirklich praktisch, wenn man 100 Mails offline bearbeiten kan und die App dann am nächsten Bahnhof wieder online schaltet und den ganzen Kram dort synchronisiert.

Einen schönen Abend :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz