![]() |
Mailversand nur einmal möglich
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; |
AW: Mailversand nur einmal möglich
Mal ganz einfach auf die Idee gekommen vor/nach dem Senden die Connection wieder zu trennen? (immer neuverbinden)
Zitat:
Nja, wenn du keine tausenden Mails die Sekunde versendest, dann gäbe es doch praktisch keine Nachteile alle Mail-Komponenten bei jedem Senden dynamisch zu erstellen und am Ende wieder freizugeben, und schon kann es auch keine übergreifenden Problemchen geben, zwischen zwei aufrufen. Und sag bitte nicht, dass "Mailen" die globale Variable für TMailen ist. Die Methde ist schon in dieser Klasse, also verwendet man hier niemals die globale Variable .... wenn nötig, dann darf man Self benutzen. Und was die Fehlerbehandlung angeht: Wieso kommt immer wieder wer auf die dämliche unpraktische Idee mit ShowMessage den Programmfluß zu unterbrechen? * entweder richtig mit Exceptions arbeiten (dann braucht die Funktion auch keinen Result) * oder einen Result Record oder z.B. ein LastErrorText-Property in TMailen, was ma bei Result=False extern ausgewertet werden kann * und schon lässt sich diese Funkton/Prozedur auch gefahrlos automatisiert nutzen (Fehlerbehandlung da, wo aufgerufen wurde, z.B. schön mit try-except und ohne einen Deadlock zu befürchten) |
AW: Mailversand nur einmal möglich
Kurz - weil ich gerade nicht dazu komme:
Danke fürs Feedback und fürs Kopf waschen :-) Ich kucke mir das nachher mal in Ruhe an ! Hans |
AW: Mailversand nur einmal möglich
Zitat:
Delphi-Quellcode:
iAttachment.Free;
Mailen.IdMessage1.Clear; Mailen.IdSMTP1.Disconnect; Mailen.IdSSLIOHandlerSocketOpenSSL1.InputBuffer.Clear; Zitat:
Zitat:
Zitat:
Zitat:
Ich habe das jetzt mal geändert, mal sehen ob es jetzt wieder geht. Wenn es immer noch hängt werde ich als nächstes die Module dynamisch erstellen und komplett beenden. Danke erstmal Hans |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz