[C++Builder] TIndyPOP3 - Komponente macht irgendein Fehler
-
Hallo zusammen,
ich benutze eine IndyPOP3-Komponente um Emails von einem Mailserver zu holen.
Und zwar benutze ich hier für den Algorithmus vonhttp://www.marquardtnet.info/cecke/index.htm
Dieser ist folgendermaßen definiert:
bool ergebnis; for(int x=1;x<=AnzahlMails;x++) { ergebnis=POP->Retrieve(x,IdMessage); if(ergebnis) { for(int y=0;y<IdMessage->MessageParts->Count;y++) { TIdText *msgText= dynamic_cast<TIdText*>(IdMessage->MessageParts->Items[y]); TIdAttachment *att= dynamic_cast<TIdAttachment*>(IdMessage->MessageParts->Items[y]); if(msgText&&msgText->ClassNameIs("TIdText")) { Memo1->Lines=msgText->Body; } else if(att&&att->ClassNameIs("TIdAttachment")) { att->SaveToFile("g:\\"+att->FileName); } } } POP->Delete(x); //Mail vom Server löschen }Wenn ich jetzt zum Beispiel 4 Emails auf dem Server liegen habe, dann zeigt er mir die über POP->CheckMessages() auch an.
Also soll er in seiner Schleife alle 4 Emails verarbeiten. Bloß jetzt macht er folgendes er holt sich die erste Email und macht seine ganzen Verarbeitungen die danach in meinem Code nocht kommen alles richtig. Wenn er jetzt aber die 2.te Email holt, dann ist es genau die selbe wie beim ersten mal. Und das macht er jetzt auch die restlichen Schleifendurchläufe nicht anderst. Doch er soll doch immer die Emails wechseln.
Kann mir jemand bei diesem Problem helfen????
Wenn er mit einer Emailverarbeitung fertig ist, dann soll er mit Delete(i) diese vom Server löschen, doch das macht er effektiv erst, wenn die Verbindung zum Mailserver getrennt wird.
Kann es daran liegen? Doch wenn es daran liegt, wie soll ich dann in einer Schleife alle nacheinander verarbeiten können??
Denn wenn ich die Verbindung trenne und wieder herstelle, dann stimmt ja die Emailreihenfolge nicht mehr mit der von vorher überein!Vielen Dank für die Antworten!
Gruß
-
hast du mal versucht was passiert wenn du das Delete nicht schreibst? werden dann alle Mails abgearbeitet?
Indy-Hilfe schrieb:
Description
Delete is a Boolean function that marks for deletion the message number specified in MsgNum. If a non-existent message number is indicated, an exception is raised. Messages marked for deletion will be removed when Disconnect is called.
eventuell ist es besser das Delete in einer separaten Schleife nach der Bearbeitungsschleife durchzuführen
-
Die Indy 9 Komponente TidMessage wünscht vor einer Neubelegung gelöscht zu werden.
Schau nochmal auf der Seite nach