![]() |
IdSMTPServer / mail from abweisen mit custom message
Hallo,
ich bin gerade dabei ein Projekt das einen Indy-Basierten SMTP-Server enhtält von einer Uralt-Indy-Version (10.0 soweit ich das erkennen kann) auf aktuell 10.5.8 (rev. 4631) upzudaten. Dabei haben sich auch die Schnittstellen zu den Eventhandlern geändert. Ich muss beim Abweisen von Mail From unterschiedliche Meldungen bereitstellen (z.B. sind bestimmte Absender in bestimmten Zuständen des Systems bzw. zu bestimmten Zeiten nicht erlaubt). In der alten Version hatte man im Eventhandler einen TIdCommand zur Verfügung und es war so gelöst:
Delphi-Quellcode:
In der neuen Version habe ich einen TIdSMTPServerContext und var VAction : TIdMailFromReply zur Verfügung, habe aber nichts gefunden, wie ich über
if Condition(...) then
begin ASender.PerformReply := true; ASender.CommandHandler.ReplyExceptionCode := 550; raise Exception.Create(LocalizeMessage(REJECT_REASON_1)); end else if OtherCondition(...) then begin ASender.PerformReply := true; ASender.CommandHandler.ReplyExceptionCode := 550; raise Exception.Create(LocalizeMessage(REJECT_REASON_2)); end;
Delphi-Quellcode:
die Statusmeldung "550 Absender@myDomain.local Sender Not Permitted" beeinflussen kann und wenn ich den Text wie bisher als Exception raise wird als Fehler 451 gesetzt, was ja einen temporären Fehler darstellt und bei meinem Exchange nicht zu einer Rückmeldung an die sendende Mailbox führt.
VAction := mReject;
Gibt es da eine einfache Möglichkeit meine Wünsche auch in der neuen Version umzusetzen? Gibt es einen anderen Weg oder habe ich vielleicht nur etwas übersehen? Danke Chris |
AW: IdSMTPServer / mail from abweisen mit custom message
Hallo,
ich hatte dann auch im ![]() Man kann sich über TIdSmtpServer.CommandHandlers den Handler für MAIL raussuchen und dort dann (für den ganzen Server) die ExceptionReply ändern.
Delphi-Quellcode:
Chris
for I := 0 to FSmtpSrv.CommandHandlers.Count - 1 do
begin LCmd := FSmtpSrv.CommandHandlers.Items[I]; if AnsiSameText (LCmd.Command, 'MAIL') then begin LCmd.ExceptionReply.NumericCode := 550; break; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 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