Hallo,
ich nutzen die
Indy TIdSMTP Komponente, um damit Mails zu versenden. Einen Auszug aus meinem Code findet Ihr unten. Es klappt so.
Wenn man falsche Verbindungsdaten (z.B. falsches Passwort oder einen ungültigen Servernamen) angegeben hat, erscheint eine Fehlermeldung. Das ist auch richtig so.
Wenn man danach nun allerdings richtige Daten angibt, und dann nochmal den Versand probiert, erscheint nach 60 Sekunden (=Timeout?) die Fehlermeldung "Connection closed gracefully" und die Mail wird nicht versendet. Auch weitere Versandversuche klappen nicht. Ich muss erst das Programm beenden und neu starten. Dann klappt der Versand.
Also in kurz: Tritt 1x ein Fehler auf, wird der Versand dauerhaft gestört. Warum? Wie setze ich die
Indy-Komponenten zurück, so dass ein Mailversand nach einem Fehler möglich ist?
Delphi-Quellcode:
//Verbindung abbauen, wenn verbunden
if IdSMTP.Connected
then
begin
try
IdSMTP.Disconnect;
except
end;
end;
//Mail-Einstellungen
IdMessage.Recipients.Clear;
IdMessage.Recipients.Add.Address := '
xxxxxxxx';
IdMessage.Body.Text := '
Testmail';
//Verbindungs-Einstellungen setzen
IdSMTP.Host := '
xxxxx';
IdSMTP.Port := '
xxxxx';
...
//Mail versenden
IdSMTP.Connect;
try
IdSMTP.Send(IdMessage);
IdSMTP.Disconnect();
except
on e:
exception do
begin
MessageDlg(e.
Message, mtError, [mbOK], 0);
IdSMTP.Disconnect();
end;
end;