![]() |
idSMTP.Connect funktioniert nicht
Hallo Zusammen,
ich habe eine Anwendung auf einem Server laufen, die eMail verschickt. Nun musste ich einen Dienst bereitstellen, der das Mailing übernimmt. Dieser Dienst (VCL) läuft auf dem gleichen Server wie die Anwendung. Ich verwende die gleiche Klasse, wie in der anderen Anwendung, aber es funktioniert nicht... Der Dienst wird zwar aufgerufen und alle Settings vorgenommen, aber beim idSMTP.Connect läuft die Anwendung ins leere... Das doofe ist, dass es auf der Entwicklungsmaschine problemlos läuft, nur auf der Produktivmaschine nicht... Hier der Code:
Delphi-Quellcode:
Ich habe ein Logging eingebaut.
function TMail_Versand.SendEmail( Recipient : string; CCList : string; sSubject : string; Body : TStringList; Pfad : string ): boolean;
var nAlarmnr : integer; Attachment : TIdAttachment; idSMTP : TIdSMTP; idMessage : TIdMessage; MailSetPfad: string; begin if Form_Main.CB_Logging.checked then Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Function SendEmail'); MailSetPfad:=ExtractFilePath(ParamStr(0))+'Res\Mail.ini'; Result := False; idSMTP := TidSMTP.Create; if Form_Main.CB_Logging.checked then Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': TidSMTP created'); try idMessage := TidMessage.Create; if Form_Main.CB_Logging.checked then Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': TidMessage created'); try idSMTP.Host := ReadFile(MailSetPfad, 'idSMTPHost'); idSMTP.Username := ReadFile(MailSetPfad, 'idSMTPUsername'); idSMTP.Password := ReadFile(MailSetPfad, 'idSMTPPassword'); idSMTP.Port := StrToInt(ReadFile(MailSetPfad, 'idSMTPPort')); if Form_Main.CB_Logging.checked then begin Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Host: '+idSMTP.Host); Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Username: '+idSMTP.Username); Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Passwort: *******'); Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Port: '+IntToStr(idSMTP.Port)); end; idMessage.From.text := ReadFile(MailSetPfad, 'idMessageFromtext'); idMessage.Sender.text := idMessage.From.text; if Form_Main.CB_Logging.checked then begin Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Absender: '+idMessage.From.text); Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Sender: '+idMessage.Sender.text); end; idMessage.Recipients.EMailAddresses := Recipient; idMessage.CCList.EMailAddresses := CCList; idMessage.Subject := sSubject; idMessage.ContentType := ReadFile(MailSetPfad, 'idMessageContentType'); with TidText.Create( idMessage.MessageParts, Body ) do begin ContentType := ReadFile(MailSetPfad, 'TidTextContentType'); end; if Pfad<>'' then begin with TIdAttachmentFile.Create( idMessage.MessageParts, Pfad ) do begin idMessage.MessageParts.Add( ); end; end; if Form_Main.CB_Logging.checked then begin Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': FExceptionEmpfaenger: '+FExceptionEmpfaenger); Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Recipient: '+Recipient); Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': idMessageContentType: '+idMessage.ContentType); Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': TidTextContentType: '+FidTextContentType); end; try if Form_Main.CB_Logging.checked then Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Trying to Connect'); //idSMTP.Connect(idSMTP.Host, idSMTP.Port); idSMTP.Connect; if Form_Main.CB_Logging.checked then Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Connected: '+BoolToStr(idSMTP.Connected)); try idSMTP.Send( idMessage ); Result := True; if Form_Main.CB_Logging.checked then Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Send idMessage'); finally idSMTP.Disconnect; if Form_Main.CB_Logging.checked then Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': DisConnected (0):'+BoolToStr(idSMTP.Connected)); end; except Result:= false; if Form_Main.CB_Logging.checked then Form_Main.LB_VersandLogging.Items.Add(DateTimeToStr(now())+': Connected: '+BoolToStr(idSMTP.Connected)); end; finally idMessage.Free; end; finally idSMTP.Free; end; end; So müsste es aussehen (auf der Entwicklungsmaschine) Zitat:
Zitat:
Seht Ihr vielleicht, was ich falsch mache? Vielen Dank Patrick |
AW: idSMTP.Connect funktioniert nicht
Warum schmeißt du eine sinnvolle Delphi-Fehlermeldung und den -Fehlermeldungsklassennamen einfach weg, ersetzt sie durch eine nichtssagende eigene Meldung und wunderst dich anschließend, dass du Fehler nicht vollziehen kannst?
Tipp: except-Blöcke, die weder "on" noch "raise;" enthalten, sind meistens kontraproduktiv. |
AW: idSMTP.Connect funktioniert nicht
Sind da nicht vertauschte Buchstaben oder zusätzliche Leerzeichen im Log des Servers? z. B. beim Benutzernamen?
|
AW: idSMTP.Connect funktioniert nicht
Username auf der Produktivmaschine:
daomaine.com Username auf der Entwicklungsmaschine: domaine.com Ob es das ist? |
AW: idSMTP.Connect funktioniert nicht
Ja das habe ich auch gesehen das vertauschte in der Domain Bezeichung
|
AW: idSMTP.Connect funktioniert nicht
Hallo Zusammen,
vielen Dank für die Unterstützung. Die vertauschten Namen waren Schreibfehler in meinem Post. Ich hatte die Daten nicht offenlegen wollen. Mittlerweile hat sich herausgestellt, dass der Produktiv-Server nicht die Berechtigung hatte, an den internen Mail-Server zu senden. Nach Änderungen der Berechtigungen funktionierte. Zitat:
Vielen Dank für die Unterstützung!!! Gruß Patrick |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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