Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Löschen von e-Mails mit Indy (https://www.delphipraxis.net/11898-loeschen-von-e-mails-mit-indy.html)

r_kerber 16. Nov 2003 15:06


Löschen von e-Mails mit Indy
 
Hallo,

sicher kennen viele hier den Magic Mail Monitor (Magic Mail Monitor v2.9). Ich versuche zur Zeit mal ein ähnliches Programm mit Delphi unter Verwendung der Indy-Komponenten zu erstellen. Gleich vorweg, ich will dem Programm keine Konkurrenz. Allein schon die geringe Größe ist mit VCL-Programmierung nicht zu erreichen! :oops:
Das Abholen der e-Mail-Headerist kein Problem. Ich bin jetzt beim Thema e-Mails löschen. Eigentlich auch kein größerer Akt, solange ich die Verbindung zum POP3-Server nicht trenne. TIdPOP3 hat eine Methode Delete. Man übergibt einfach die laufende Nummer und schon ist die entsprechende Nachricht markiert und beim Trennen der Verbindung gelöscht. So weit so gut.
Ich möchte jetzt aber erst die Nachrichten herunterladen und dann die zu löschenden Nachrichten offline markieren. Dabei kann ich doch sicher nicht davon ausgehen, dass die Nachrichten wieder in der selben Reihenfolge heruntergeladen werden, oder?

moin339 16. Nov 2003 15:12

Re: Löschen von e-Mails mit Indy
 
speicher doch einfach das datum und den Titel der zu löschenden Nachricht und such beim zweiten durchgang dannach.

ciao, moin339

PeterRettig 16. Nov 2003 15:19

Re: Löschen von e-Mails mit Indy
 
Hi,

nein nicht Datum und Titel sondern die MessageID ist entscheidend!

Ciao Peter

r_kerber 16. Nov 2003 15:31

Re: Löschen von e-Mails mit Indy
 
Hallo Peter,

Zitat:

Zitat von PeterRettig
nein nicht Datum und Titel sondern die MessageID ist entscheidend!

Das sehe ich auch so. Danke.

Basilikum 16. Nov 2003 15:52

Re: Löschen von e-Mails mit Indy
 
oder aber die UID (Unique-ID)... diese muss nicht mühsehlig aus dem Header entnommen werden, sondern kann direkt per POP3-Kommando (UIDL [Message-ID]) angeforder werden... der POP3-Server ist verantwortlich, dass diese UID über mehrer Logins hinweg identisch ist/bleibt...

scp 16. Nov 2003 16:30

Re: Löschen von e-Mails mit Indy
 
Zitat:

Zitat von Basilikum
oder aber die UID (Unique-ID)... diese muss nicht mühsehlig aus dem Header entnommen werden, sondern kann direkt per POP3-Kommando (UIDL [Message-ID]) angeforder werden... der POP3-Server ist verantwortlich, dass diese UID über mehrer Logins hinweg identisch ist/bleibt...

Meinst du jetzt mit [Message-ID] die fortlfd. Nummer oder wirklich die Message-ID? Dann wäre das ganze ja doch wieder mühselig :-)
Ausserdem habe ich schlechte Erfahrungen mit UIDs, bei GMX ist es zumindest bei IMAP so, das die UIDs identisch zur temporären fortlfd. Nummer sind.

PS:
So mühselig ist es gar nicht:
Delphi-Quellcode:
  IdPOP31.RetrieveHeader(CurNo, IdMessage1);
  MsgID := IdMessage1.Headers.Values['Message-ID'];

r_kerber 16. Nov 2003 16:39

Re: Löschen von e-Mails mit Indy
 
geht noch einfacher:
Delphi-Quellcode:
MsgID := IdMessage1.MsgId;

Basilikum 16. Nov 2003 16:51

Re: Löschen von e-Mails mit Indy
 
Zitat:

Zitat von scp
Zitat:

Zitat von Basilikum
oder aber die UID (Unique-ID)... diese muss nicht mühsehlig aus dem Header entnommen werden, sondern kann direkt per POP3-Kommando (UIDL [Message-ID]) angeforder werden... der POP3-Server ist verantwortlich, dass diese UID über mehrer Logins hinweg identisch ist/bleibt...

Meinst du jetzt mit [Message-ID] die fortlfd. Nummer oder wirklich die Message-ID? Dann wäre das ganze ja doch wieder mühselig :-)
Ausserdem habe ich schlechte Erfahrungen mit UIDs, bei GMX ist es zumindest bei IMAP so, das die UIDs identisch zur temporären fortlfd. Nummer sind.

neeee... mit [Message-ID] meinte ich schon die fortlaufende....

mühselig in dem Sinne, als dass bei jedem Mail der Header heruntergeladen werden muss... was bei Modem oder ausgelastetem Server recht lange dauern kann... deshalb wäre die Verwendung von UID besser... gemäss RFC 1939: "[..] The unique-id of a message is an arbitrary server-determined string, [..] which uniquely identifies a message within a maildrop and which persists across sessions. This persistence is required even if a session ends without entering the UPDATE state. [..]".

Code:
STAT
+OK 3 5667
LIST
+OK List of messages: 3 message(s), 5667 bytes
1 3179
2 880
3 1608
.
UIDL
+OK List of unique ids: 3 message(s), 5667 bytes
1 JECJGECPABJC
2 JECPOFAKABJJ
3 JEDCLFFOABJL
.
LIST 2
+OK 2 880
UIDL 2
+OK 2 JECPOFAKABJJ
QUIT


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.

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