![]() |
IdSMTP sendet nicht und IdMessage wird nicht gespeichert.
Ich probiere hier aus und es funktioniert. Mein SMTPSocket sendet die Emails nicht und bringt beim Disconnecten eine Fehlermeldung.
Kann mir da jemand helfen? Hier der Quelltext:
Delphi-Quellcode:
Also Das SaveToFile gibt eine Fehlermeldung dass es nicht zu speichern geht. und beim logoff kommt auch eine, sodass die Nachricht nicht gesendet wird.
function login_SMTP(Username,PW,Server : String;Port : Integer; SMTPSocket : TIdSMTP):boolean;
var SetUp : TEinstellungen; SSLIOHandler : TIdSSLIOHandlerSocketOpenSSL; begin SetUp := LadeEinstellungen(Form2); if SMTPSocket.Connected then SMTPSocket.Disconnect(); SMTPSocket.Username := Username; SMTPSocket.Password := PW; SMTPSocket.Port := Port; SMTPSocket.Host := Server; if Setup.smtpssl = true then begin SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(); SSLIOHandler.PassThrough := True; SSLIOHandler.StartSSL; SMTPSocket.IOHandler:= SSLIOHandler; SMTPSocket.UseTLS:=TIdUseTLS(2); end else begin SMTPSocket.UseTLS:=utNoTLSSupport; end; 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 SMTPSocket.Connected = 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]); end; SMTPSocket.SendMsg(IdNachricht); end; end; procedure TFrame3.SpeedButton2Click(Sender: TObject); var s,hToMail : String; F : File; i,k : integer; leerArray : Array of Integer; jahr,monat,tag,stunde,minute,sekunde,millisekunde : Word; begin SetUp:=ladeEinstellungen(Form2); SMTPSocket := TIdSMTP.Create(); toMail := TStringList.Create; s := Edit1.Text; SetLength(leerArray,0); for i := 1 to Length(s) do begin if s[i]=' ' then begin Setlength(leerArray,length(leerArray)+1); leerArray[length(leerArray)-1] := i; end; end; hToMail := ''; for i := 1 to leerArray[0]-1 do begin hToMail:=hToMail+s[i]; end; toMail.Add(hToMail); hToMail := ''; for i := 1 to length(leerArray)-1 do begin if i <= length(leerArray)-2 then begin for k := leerArray[i]+1 to leerArray[i+1]-1 do begin hToMail := hToMail+s[k]; end; hToMail := ''; end else begin for k := leerArray[length(leerArray)-1]+1 to length(s) do begin hToMail := hToMail + s[k]; end; end; end; 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); logoff_SMTP(SMTPSocket); Showmessage('Gesendet'); NMessage := TIdMessage.Create(); NMessage.Body.Text := Richedit1.Text; NMessage.Subject := Edit2.Text; s := NMessage.BccList.EmailAddresses; for i := 0 to toMail.Count -1 do begin s := s+ toMail.Strings[i]; end; NMessage.BccList.EMailAddresses := s; NMessage.Date := Now; s:=DateToStr(NMessage.Date); CreateFile(PWideChar(extractfilepath(paramstr(0))+'\MailClient\Mails\gesendet\'+NMessage.Subject+s+'.msg'),0,0,0,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,0); NMessage.SaveToFile(extractfilepath(paramstr(0))+'\MailClient\Mails\gesendet\'+NMessage.Subject+s+'.msg'); Form2.Frame51.ListBox1.Items.Add('gesendet'); Form2.Frame51.ListBox2.Items.Add(NMessage.BccList.EMailAddresses); Form2.Frame51.ListBox3.Items.Add(NMessage.Subject); Form2.Frame51.ListBox4.Items.Add(inttostr(tag)+'.'+inttostr(monat)+'.'+inttostr(jahr)+' '+inttostr(stunde)+':'+inttostr(minute)+'.'+inttostr(Sekunde)); end; |
AW: IdSMTP sendet nicht und IdMessage wird nicht gespeichert.
Wie wäre es, wenn du mal etwas strukturierter vorgehen würdest?
1. Quelltext ordentlich formatieren, damit man die zusammengehörigen Blöcke auch erkennen kann 2. Überflüssige Parameter aus den Proceduren entfernen 3. DRY!!! Du baust die IdMessage 2 mal zusammen, irgendwie doppelt, gelle? Lege dir das Befüllen der IdMessage in eine eigene procedure Der SendMessage übergibst du dann nur noch die beiden Instanzen von TIdSMTP und TIdMessage Dann wird das schon mal wesentlich übersichtlicher und erleichtert auch dir die Fehlersuche |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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