AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie prüft man eine Mailbox?

Ein Thema von wurzelsepp1 · begonnen am 1. Dez 2023 · letzter Beitrag vom 10. Dez 2023
Antwort Antwort
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#1

Wie prüft man eine Mailbox?

  Alt 1. Dez 2023, 15:41
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wie prüft man eine Mailbox?

  Alt 1. Dez 2023, 16:19
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").
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#3

AW: Wie prüft man eine Mailbox?

  Alt 1. Dez 2023, 16:29
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

Geändert von mytbo ( 1. Dez 2023 um 16:54 Uhr) Grund: PS hinzugefügt
  Mit Zitat antworten Zitat
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#4

AW: Wie prüft man eine Mailbox?

  Alt 2. Dez 2023, 18:01
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
  Mit Zitat antworten Zitat
Beach

Registriert seit: 3. Mär 2019
Ort: Kappel
46 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Wie prüft man eine Mailbox?

  Alt 3. Dez 2023, 20:39
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.
MfG Jürgen
  Mit Zitat antworten Zitat
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#6

AW: Wie prüft man eine Mailbox?

  Alt 4. Dez 2023, 18:57
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 ..
  Mit Zitat antworten Zitat
Beach

Registriert seit: 3. Mär 2019
Ort: Kappel
46 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Wie prüft man eine Mailbox?

  Alt 4. Dez 2023, 21:11
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.
MfG Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#8

AW: Wie prüft man eine Mailbox?

  Alt 4. Dez 2023, 21:32
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Dez 2023 um 21:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von arcticwolf
arcticwolf

Registriert seit: 3. Aug 2021
Ort: Erfurt
41 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Wie prüft man eine Mailbox?

  Alt 7. Dez 2023, 09:19
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.
Wolfgang
coding is an art - code for people not for machines
  Mit Zitat antworten Zitat
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#10

AW: Wie prüft man eine Mailbox?

  Alt 10. Dez 2023, 21:09
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
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 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