![]() |
Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Moin,
Ich habe ein für mich seltsames Problem, Ich habe eine auf Indy basierende Fragebogenabgabe erstellt(mit CE 10.4), welche auf verschiedenen Windows 10 Pcs funktioniert, sobald ich die exe(und die ssleay32.dll sowie libeay32.dll) jedoch auf Windows Server 2019 ziehe funktioniert alles bis auf den Email versand. Ich finde jedoch nichts zu bekannten Problemen diesbezüglich und 10.4 soll Windows Server 2019 unterstützen. Ergänzung: Die Windows 10 Pcs sind meine also mit Adminrechten, für Windows Server 2019 habe ich es auf einem Arbeitsrechner getestet, wo ich keinen Adminzugriff habe und wenig Infos oder Einfluss auf Netzwerkeinstellungen etc.. Anbei stark reduziert der Code:
Delphi-Quellcode:
unit Hauptunit;
interface Uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls, System.UITypes, Mail; type TForm1 = class(TForm) btn_Abgeben: TButton; procedure btn_AbgebenClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn_AbgebenClick(Sender: TObject); var Abgeben:integer; BodyList:TStringList; AttachmentList:TStringList; Absender:string; Empfänger:String; Betreff:string; begin BodyList:=TStringList.Create; AttachmentList:=TStringList.Create; try begin BodyList.Add(******); AttachmentList.Add(ExtractFilePath(Application.Exename) + '*******csv'); Absender:=**********@*******.de; Empfänger:=******@*******.de; Betreff:=***********; if Form2.SendMail(Absender,Empfänger,Betreff,BodyList,AttachmentList) then begin showmessage('Abgabe erfolgreich'); end; end; finally begin BodyList.Free; AttachmentList.Free; end;
Delphi-Quellcode:
unit Mail;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP, IdMessage, IdAttachment, IdAttachmentFile; type TForm2 = class(TForm) IdSMTP: TIdSMTP; IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL; IdMessage: TIdMessage; private { Private-Deklarationen } public { Public-Deklarationen } Function SendMail(Absender:string; Empfänger:string; Betreff:String; Nachricht:TStringList; Anhang:TStringlist):Boolean; end; var Form2: TForm2; implementation {$R *.dfm} Function TForm2.SendMail(Absender:string; Empfänger: string; Betreff: string; Nachricht: TStringlist; Anhang: TStringlist): Boolean; var Mes:TIdMessage; Attachment:TIdAttachment; i:integer; begin Mes:=TIdMessage.Create(self); try begin with Mes do begin Clear; ContentType:='multipart/*'; From.Address:=Absender; Recipients.EMailAddresses:=Empfänger; Subject:=Betreff; Body:=Nachricht; if Anhang.Count <> 0 then begin for i := 0 to Anhang.Count-1 do begin Attachment:=TIdAttachmentFile.Create(Mes.MessageParts,Anhang[i]); end; end; end; if IdSMTP.Connected then IdSMTP.Disconnect; IdSMTP.Port:=587; IdSMTP.UseTLS:=utUseExplicitTLS; IdSMTP.Host:=******@****.de; IdSMTP.Username:=*********; IdSMTP.Password:=********************; IdSMTP.AuthType:=TIdSMTPAuthenticationType.satDefault; IdSMTP.ConnectTimeout:=1000; IdSMTP.Connect; IdSMTP.Authenticate; try begin IdSMTP.Send(Mes); result:=true; end; except begin result:=false; end; end; end; finally begin IdSMTP.Disconnect; Attachment.Free; Mes.Free; end; end; end; end. |
AW: Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Hallo,
was kommt denn im try except als Fehlermeldung? |
AW: Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Zitat:
Delphi-Quellcode:
Solche Konstrukte sind meiner Meinung nach verantwortungslos.
try
begin IdSMTP.Send(Mes); result:=true; end; except begin result:=false; end; end;
Delphi-Quellcode:
Auch in btn_AbgebenClick könnte das Abfangen einer Exception hilfreich sein.
try
begin IdSMTP.Send(Mes); result:=true; end; except on e : Exception do begin result := false; MessageDlg(e.Message,mtError,[mbOk],0); // oder zumindest einen Eintrag in 'ner Log-Datei, einem Protokoll, ... end; end; In SendMail werden nur Fehler beim
Delphi-Quellcode:
abgefangen, aber letztlich ignoriert. Die Fehlerursache könnte aber durchaus auch z. B. beim
IdSMTP.Send(Mes);
Delphi-Quellcode:
oder beim
Attachment := TIdAttachmentFile.Create(Mes.MessageParts,Anhang[i]);
Delphi-Quellcode:
oder beim
IdSMTP.Connect;
Delphi-Quellcode:
oder beim ... liegen.
IdSMTP.Authenticate;
Aus dem Code ist beim besten Willen nicht zu erkennen, was denn hier ggfls. falsch laufen könnte. |
AW: Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Du rufst SendMail in Form11 auf; hier ist die Routine in Form2 definiert. Testest Du mit der richtigen Unit?
|
AW: Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Zitat:
Ich habs mal schnell nachgeholt, aber es werden keine Meldungen(weder bei Abgabe noch SendMail ausgespuckt, es hängt sich einfach auf.(Task Manager Status: inaktiv) Zitat:
Zitat:
Zusätzlich habe ich einige Sendmessages verteilt und konnte eingrenzen wo das problem zu liegen scheint
Delphi-Quellcode:
5 wird noch ausgegeben, 6 nicht mehr.
showmessage('4');
IdSMTP.ConnectTimeout:=1000; showmessage('5'); IdSMTP.Connect; showmessage('6'); IdSMTP.Authenticate; showmessage('7'); Zitat:
|
AW: Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Zitat:
Damit nimmt man sich jegliche Chance irgendwie auf Fehler zu reagieren, da man nie erfährt, was denn überhaupt schiefgelaufen sein könnte. Und wenn man solche Konstrukte über mehrere Funktionen und / oder Prozeduren verschachtelt hat, erfährt man nichtmal, wo denn ein Fehler aufgetreten sein könnte. |
AW: Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Oben noch vergessen zu erwähnen,
Die Windows 10 Pcs sind meine also mit Admin rechten, für Windows Server 2019 habe ich es auf einem Arbeitsrechner getestet, wo ich keinen Adminzugriff habe und wenig Infos oder Einfluss auf Netzwerkeinstellungen etc. |
AW: Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Zitat:
Da werde ich wohl zukünftig den inneren Schweinehund noch etwas überwinden müssen. Danke für den Hinweis. |
AW: Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Zitat:
Kennst Du ![]() Das ist ein Konsolenprogamm zum Versenden von Mails. Eventuell kannst Du damit mal versuchen, ob damit 'ne Mail zu verschicken ist. Wenn ja, dann musst Du in Deinem Programm weitersuchen, wenn nein, dann liegt da eine grundlegendere Problematik vor. Achso: Mails könnte man auch über die Kommandozeile via TelNet verschicken, da sieht man ggfls. auch, wo es hakt. Gebrauchsanweisung dazu: ![]() |
AW: Mail via Indy klappt auf Windows 10 aber nicht auf Windows Server 2019
Versuch mal: if idSMTP.connected then showmessage('6');
Ich bezweifle dass er überhaupt verbindet. Schalte zum Testen mal die Windows Firewall ab. Mirko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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 by Thomas Breitkreuz