Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Prozedur blockiert Programm. Und finde den Fehler nicht. (https://www.delphipraxis.net/167721-prozedur-blockiert-programm-und-finde-den-fehler-nicht.html)

Informatik2012 14. Apr 2012 19:24

Prozedur blockiert Programm. Und finde den Fehler nicht.
 
Soweit ich rausgefunden habe stürzt das Programm beim Login in den SMTP Server ab.
Delphi-Quellcode:
  login_SMTP(SetUp.Username,SetUp.Passwort,SetUp.SMTPServer,SetUp.SMTPPOrt,SMTPSocket); sendMessage(SetUp.Username,SetUp.Passwort,SetUp.SMTPServer,SetUp.SMTPPort,2,SetUp.Username,Edit2.Text,Attachment,toMail,Richedit1,SMTPSocket);
//sendMessage(Username,PW,Server : String;Port, Priority : Integer; fromMail,Betreff: String;Anhang : TStringList;toMail : TStringList;Nachricht : TRichEdit; SMTPSocket : TIdSMTP);
  logoff_SMTP(SMTPSocket);
beim SendMessage stürzt es ab.
SendMessage ist es wie folgt definiert:
Delphi-Quellcode:
function login_SMTP(Username,PW,Server : String;Port : Integer; SMTPSocket : TIdSMTP):boolean;
begin
  if SMTPSocket.Connected then
  SMTPSocket.Disconnect();

   SMTPSocket.Username := Username;
   SMTPSocket.Password := PW;
   SMTPSocket.Port := Port;
   SMTPSocket.Host := Server;
    SMTPSocket.AuthType := satDefault;
   SMTPSocket.Connect;
   Result := SMTPSocket.Connected;
end;

procedure logoff_SMTP(SMTPSocket : TIdSMTP);
begin
   SMTPSocket.Disconnect();
end;

procedure sendMessage(Username,PW,Server : String;Port, Priority : Integer; fromMail,Betreff: String;Anhang : TStringList;toMail : TStringList;Nachricht : TRichEdit; SMTPSocket : TIdSMTP);
var IdNachricht : TIdMessage;
   i : integer;
   s : String;
  IdAnhang : TIdAttachmentFile;
begin
   if login_SMTP(Username,PW,Server,Port,SMTPSocket) = true then
   begin
      IdNachricht := TIdMessage.Create(nil);
      with TIdText.Create(IdNachricht.MessageParts, nil) do
      begin
         ContentType := 'text/plain';
         Body.Text := Nachricht.Text;
      end;
      s := '';
      with IdNachricht do
      begin
         ContentType := 'multipart/*';
         From.Text := fromMail;
         ReplyTo.EMailAddresses := fromMail;
         Subject := Betreff;
         Priority := TIdMessagePriority(Priority);
         s := BccList.EmailAddresses;
         for i := 0 to toMail.Count -1 do
         begin
            s := s+ toMail.Strings[i];
         end;
         BccList.EMailAddresses := s;
      end;
         if Anhang.Count >= 1 then
         begin
            for i := 0 to Anhang.Count -1 do
               IdAnhang := TIdAttachmentFile.Create(IdNachricht.MessageParts,Anhang[i]);
//          IdAnhang.StoredPathName:=Anhang_Pfad.Strings[i];
//          IdAnhang.Filename := Anhang_Datei.Strings[i];
//          IdAnhang.OpenLoadStream;
//          IdAnhang.CloseLoadStream;

         end;
      try SMTPSocket.Send(IdNachricht)
      finally   logoff_SMTP(SMTPSocket); end;
      //SMTPSocket.Free;
   end;
end;
end.
ich probiere den SMTP-Server von googlemail aus.
Als ich probiert hatte mit Web.DE SMTP-Server, kam die Fehlermeldung "bad sequenced commands".
Kann es sein, dass es am SMTP-Server liegt?

Luckie 14. Apr 2012 19:34

AW: Prozedur blockiert Programm. Und finde den Fehler nicht.
 
Und mit welcher Fehlermeldung stürzt es ab?

Informatik2012 14. Apr 2012 19:36

AW: Prozedur blockiert Programm. Und finde den Fehler nicht.
 
mit gar keiner. es reagiert einfach nicht mehr.

Luckie 14. Apr 2012 19:41

AW: Prozedur blockiert Programm. Und finde den Fehler nicht.
 
Dann ist es nicht abgestürzt, sondern es reagiert nicht mehr, weil es auf Beendigung der Prozedur wartet.

Informatik2012 14. Apr 2012 19:45

AW: Prozedur blockiert Programm. Und finde den Fehler nicht.
 
ja okay. das kann sein.
Also muss ich das versuchen über einen Thread zu realisieren, damit das Programm nicht blockiert wird?

Sir Rufo 14. Apr 2012 21:54

AW: Prozedur blockiert Programm. Und finde den Fehler nicht.
 
Findest du nicht dass du da doppelmoppelst?

login
sendmessage
logout

und in sendmessage machst du
login
...
logout


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz