Il y a longtemps que j'écrit le code suivant pour récupérer des courriels de boîte aux lettres:Exception est générée deux fois par TNMPOP3.Connect
pop3 := TNMPOP3.Create(Self);
try
pop3.Host := FAppSettings.ServerName;
pop3.Port := FAppSettings.ServerPort;
pop3.UserID := FAppSettings.Login;
pop3.Password := FAppSettings.Password;
try
pop3.Connect;
except
on E:Exception do AddError(E.Message);
end;
if not pop3.Connected then Exit;
if pop3.MailCount > 0 then begin
pop3.DeleteOnRead := False;
pop3.AttachFilePath := GetTempDirectory;
ProcessMsgs(pop3);
end
else begin
TCommon.InfMsg('There are no messages in mailbox');
end;
pop3.Disconnect;
finally
pop3.Free;
end;
Maintenant, lorsque le fournisseur de service de messagerie commuté entièrement SSL ce code ne évidemment, mais dans un étrange way:
pop3.Connect
ligne provoque une exception mais avec un texte vide dans E.Message rendant le problème peu clair pour l'utilisateur final.
enquête du problème dans débogueur Delphi révèle que la première fois la bonne exception est générée:
projet .... soulevé exception classe Exception avec le message «Echec de l'authentification.
mais, quand j'appuyez sur F8 (Step Over) à nouveau, le point d'exécution reste dans la même ligne et une autre exception est générée:
projet .... soulevé classe exception Exception avec le message ' '.
et seule cette exception est interceptée par try-except
.
Pourquoi?
Regardez le code de 'TNMPOP3' la raison devrait être là –
@Sir Rufo: Je n'ai pas de code source pour' TNMPOP3' – Paul
Après quelques recherches, il semble que les composants de FastNet sont un peu bogués (amical parlé) et vous devriez penser à utiliser une bibliothèque différente. En raison de Delphi 6 regarder http://synapse.ararat.cz –