Einzelnen Beitrag anzeigen

slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#2

AW: Indy - Mails Abrufen - Socket-Fehler # 10054 Verbindung von Peer zurückgesetzt.

  Alt 29. Jan 2018, 17:01
Hallo,

zuerst einmal wäre es gut zu wissen, warum die Verbindung hakt. Vermutlich hast du keinen Zugriff auf den Mail-Server, oder?

Ich würde als erstes ein Logging einbauen, ich mache das so:
Code:
  IdLogFile:=TIdLogFile.Create(nil);
  IdLogFile.Filename:=IncludeTrailingPathDelimiter(AppDataDir) +
                      IncludeTrailingPathDelimiter(moduleKey)+'IdLogFile.txt';
  IdLogFile.Active:=true;
  SSB_SSLHandler.Intercept:=IdLogFile;
  IdPop3.Intercept:=IdLogFile;
Da wird dann alles gekloggt, auch Passwörter, etc.
AppDataDir uns moduleKey kommt aus meiner Anwendung ist nur ein Beispiel. SSB_SSLHandler ist ein Ersatz für TIdSSLIOHandlerSocketOpenSSL von Secureblackbox, das wirst du auch anpassen müssen.

Weiterhin würde ich die Funktionen
Code:
POP.Connect;
POP.CheckMessages;
POP.Retrieve;
in try..except Blöcke mit entsprechendem Logging setzen.
Zum Beispiel:
Code:
  try
     idPop3.Connect;
  except
    on E : Exception do begin
      // Fehlermeldung protokollieren
      New(InfoMessageRecord);
      InfoMessageRecord^.ThreadID := GetCurrentThreadID;
      InfoMessageRecord^.Content := 'Exception: class name = '+E.ClassName+' / message: '+E.Message;
      PostThreadMessage(ThreadIDMessaging, TH_MESSAGING, TH_INFOMESSAGE, Integer(InfoMessageRecord));
      exit;
    end;
  end;
Auch hier: Kommt aus meiner Anwendung, insbesondere den Except Block musst du anpassen.

Also - als nächstes schauen, warum das passiert, dann kann man entsprechend in der Anwendung reagieren.

lg
Sebastian
  Mit Zitat antworten Zitat