Indy POP - Codiertabelle

dern3ro

Grünschnabel
#1
Hallo,

ich hab zwei Programme geschrieben, eines welches Emails mit Anhängen verschickt (eine .dat Datei und bis zu 8 Bilder)

... und eines welche diese Emails empfangen soll.

Das klappt auch alles wunderbar nur manchmal kommt folgender Fehler:

Eine Excption tritt in der Klasse IdTableNotFound mit Meldung: "Eintrag in der Codiertabelle nicht gefunden".

Code:
        bool ergebnis;
        for(int x=1;x<=AnzahlMails;x++){
	        IdMessage->Clear();
                ergebnis = POP->Retrieve(x,IdMessage); // Fehler passiert hier. Also es scheint irgendwas mit Codieren und dem speichern in IdMessage nicht zu klappen
	        if(ergebnis){
                .
                .
                ...

weiss jmd was ich da machen kann. Ist sehr dringend


Vielen Dank und liebe Grüße

Daniel
 

Turri

Erfahrenes Mitglied
#2
Hallo,

dafür suche ich auch eine gängige Lösung.
Derzeit hab ich einen try-catch Block um das Retrieve und im Catch lösche ich die x-te Mail,
die das Programm nicht holen konnte.
So richtig gefällt es mir auch nicht, aber bisher hab ich auch keine Mail vermisst.

Hier mein Workaround

C++:
try
{
   ergebnis = IdPOP31->Retrieve(x,IdMessage1);
}
catch(Exception &e)
{
   // e.Message = Eintrag in Codiertabelle nicht gefunden
   ShowMessage("Fehler beim Message-Retrieve: "+e.Message);
   try
   {
         IdPOP31->Disconnect();
         IdPOP31->Connect();
         IdPOP31->Delete(x);      // das x-te Mail will nich, also zum löschen freigeben...
         IdPOP31->Disconnect(); // Mails werden erst beim disconnect gelöscht, 
                                    //deswegen lösche ich jetzt die Fehlerhafte
    }
....
 

Turri

Erfahrenes Mitglied
#3
Hallo,

hab mal bisschen Google bemüht und das hier gefunden.
Link
Was die in dem Link ansprechen ist die "TIdBase64" Kompontente.
Hab sie jetzt selbst noch nicht ausprobiert könnte mir aber vorstellen, das damit was geht.

Vielleicht hilft es ja.
 

dern3ro

Grünschnabel
#4
Hallo,

Ja das mit dem Löschen ist etwas rabiat ;) .... mhh mal drüber nachdenken.

Werd mir heute Nachmittag mal deinen Link angucken.

Vielen Dank schon mal für deine Hilfe
 

Turri

Erfahrenes Mitglied
#5
Hallo,

noch ein nützlicher Link :D
Is zwar Delphi Code, aber ist ja halbwegs lesbar.

Link

Könnte wirklich an den IdMessage Einstellungen (NoEncode und NoDecode) liegen.

Muss ich selbst mal ausprobieren.