![]() |
idIMAP: Mail auf dem Server löschen
Ich habe mal etwas mit der idIMAP-Komponente herumgespielt und kann auch wunderbar per IMAP auf meine Mailbox zugreifen (Es wird mit dem IMap-Server verbunden, die Anzahl der EMails abgefragt und dann von jeder EMail der Betreff in eine Liste hinzugefügt):
Delphi-Quellcode:
So, Problem ist jetzt aber, dass ich keine EMail löschen kann.
IdIMAP41.Host := IMapServer;
IdIMAP41.Username := Benutzername; IdIMAP41.Password := Kennwort; IdIMAP41.Connect(True); IdIMAP41.SelectMailBox('inbox'); lbl_Anzahl.Caption := IntToStr(IdIMAP41.MailBox.TotalMsgs); for i := 1 to StrToInt(lbl_Anzahl.Caption) do begin IdIMAP41.RetrieveHeader(i, idMessage1); box_Mails.Items.Add(idMessage1.From.Text + ': ' + idMessage1.Subject + '[(id:' + IntToStr(i) + ')]'); end; Meine Vorgehensweise: Ich benutze die id, welche ich in der Liste mitabgespeichert habe (dies funktioniert, da ich auf diese Weise auch den Body einer Nachricht anzeigen lassen kann):
Delphi-Quellcode:
Was mache ich falsch?
var
LoeschID: array[0..0] of LongInt // Die Methode verlangt nach einem statischen Array begin LoeschID := {ID aus der Listbox} IdIMAP41.DeleteMsgs(LoeschID); end; |
Re: idIMAP: Mail auf dem Server löschen
Hallo,
1. Mit "DeleteMsgs" wird nur das IMAP-Löschkennzeichen gesetzt. Wurden die Mails mit "IdIMAP41.ExpungeMailBox" endgültig gelöscht? 2. Gibt "DeleteMsgs" TRUE zurück? 3. Grundsätzlich: Nach unserer Erfahrung sollte man besser mit der UID arbeiten, die ist immer eindeutig (UIDDeleteMsgs...). Viele Grüsse Thomas |
Re: idIMAP: Mail auf dem Server löschen
Zitat:
Zu 3. habe ich allerdings noch eine Frage: Wie kann ich auf die UID zugreifen? Wenn ich idMessage1.UID nehme erhalte ich einen leeren Sctring zurück, wenn ich allerdings idMessage1.MsgId nehme, erhalte ich einen String (eindeutig?) zurück. Sind diese beiden IDs identisch? |
Re: idIMAP: Mail auf dem Server löschen
Hallo,
1. Die ID ist ein fortlaufende Nummer, die nur für den aktuellen Aufruf gilt. So kann z.B. die ID=17 jetzt das Mail X und in einer Stunde das Mail Y sein (wegen Eingang, löschen, bearbeiten im Web-Interface usw.). 2. Die UID ist dagegen immer eindeutig und damit sicherer. 3. Mit der Funktion "GetUID" kann die UID aus der ID ermittelt werden. Ansonsten gibt es für fast alle ID-Funktionen ein Gegenstück mit UID (UIDDeleteMsgs, UIDRetrieveEnvelope usw.). 4. Allgemeine Anmerkung: So schön und vielseitig Indy auch ist, es enthält leider viele Fehler, die man selber ausbügeln muss. Habe aber noch nichts besseres gefunden :-( Viele Grüsse |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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