Einzelnen Beitrag anzeigen

H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#1

Mailversand nur einmal möglich

  Alt 28. Sep 2021, 09:14
Moin,

ich habe ein Programm das Mails mit einem per SSL versendet. Komischerweise funktioniert das nur beim ersten Mal, beim zweiten Mal bleibt das Programm beim Connect stecken - ich bekomme aber auch keine Exception.

Kann mir jemand sagen was ich da falsch mache ??

Gruss
Hans

Delphi-Quellcode:
function TMailen.SendeMail(MailEmpfaenger: String; const Betreff: String; const Anhang :String) : boolean;
var
  iAttachment : TIdAttachment;
begin
  Form1.EdtStatus.Text := 'Connect';
  Form1.EdtStatus.Refresh;
  (* Connect mit Server *)
  if not Mailen.IdSMTP1.Connected then
  begin
    Mailen.IdSMTP1.AuthType := satDefault; // simpler Login ohne Authentifizierung
    Mailen.IdSMTP1.Host := MailServer;
    Mailen.IdSMTP1.Port := MailPort;
    Mailen.IdSMTP1.UseTLS := utUseRequireTLS; // mit SSL
    Mailen.IdSMTP1.Username := MailAbsender; // Benutzername
    Mailen.IdSMTP1.Password := MailPasswort; // Passwort
    // Verbinden mit Server
    try
        Mailen.IdSMTP1.Connect;
    except
     on E: Exception do
       begin
         result := false;
         Application.MessageBox (PChar(E.Message),'Verbindungsfehler Connect !',MB_OK);
         Mailen.IdSMTP1.Disconnect;
         exit;
       end;
    end;
  end;

  (* Mail erstellen *)
  Form1.EdtStatus.Text := 'Mail erstellen: '  +DateiName;
  Form1.EdtStatus.Refresh;
  Mailen.IdMessage1.ContentType := 'multipart/*'; // mit Anhang!
  iAttachment := TIdAttachmentFile.Create(Mailen.IdMessage1.MessageParts, Anhang);
  Mailen.IdMessage1.Body.Add(MailBody); // der eigentliche eMail -Text aus einem TMemo
  Mailen.IdMessage1.Priority := TIdMessagePriority(2); // Priorität
  Mailen.IdMessage1.Recipients.EMailAddresses := MailEmpfaenger; // Empfängeradresse
  Mailen.IdMessage1.ReplyTo.EMailAddresses := MailAbsender; // Anwortadresse
  Mailen.IdMessage1.From.Text := MailAbsender; // Absenderadresse
  Mailen.IdMessage1.Subject := Betreff;

  Form1.EdtStatus.Text := 'Mail senden: '  +DateiName;
  Form1.EdtStatus.Refresh;
  try
     Mailen.IdSMTP1.Send(Mailen.IdMessage1);

  except
    on E: Exception do
    begin
       result := false;
       Application.MessageBox (PChar(E.Message),'Verbindungsfehler Versand !',MB_OK);
       Mailen.IdSMTP1.Disconnect;
       iAttachment.Free;
       Mailen.IdMessage1.Clear;
       exit;
    end;
  end;
  iAttachment.Free;
  Mailen.IdMessage1.Clear;
  result := true;
  Mailen.Close;
end;
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat