Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#5

AW: Problem mit Email-Versand Indy

  Alt 15. Mai 2018, 17:10
Also zum einen würde ich das smtp.connect nicht schon im FormCreate machen.
Dafür könntest du dir eine function (z.B. ConnectSMTP) anlegen, in der auch alle Werte, die jetzt im FormCreate stehen, gesetzt werden.
Mir fallen nur sehr wenige Fälle ein, in denen es Sinn machen würde die SMTP-Verbindung während der ganzen Programmlaufzeit aufrecht zu halten. (Von den Problemen mal ganz abgesehen, wenn den Provider die zwischendurch kappt).

Diese Funktion sollte dann als Rückgabewert ein Boolean zurückgeben, je nachdem ob connected werden konnte oder nicht.

Zum anderen würde ich TIdMessage nicht mit Owner Application erzeugen.

Und die ButtonClick-Routine sollte dann so aussehen:

Delphi-Quellcode:
procedure ButtonClick(Sender: TObject);
var
  m: TIdMessage;
begin
  if connectSMTP then
  Try
    m:=TIdMessage.Create(nil); //mit nil als Owner erzeugen.
    .
    .
    .
    SMTP.send(m);
  finally
    SMTP.disconnect; //oder SMTP.Connected:=false; das weiß ich jetzt aus dem Kopf nicht.
    m.free;
  end;
end;
Das hilft dir jetzt zwar nicht bei deinem Problem, ist aber sinnvoller.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat