Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi SMTP Server weiterleitung (https://www.delphipraxis.net/98228-smtp-server-weiterleitung.html)

nitschchedu 23. Aug 2007 21:54

Re: SMTP Server weiterleitung
 
Ähh das kann die Komponente selber ? Wie ?

Ansonsten würde ich es so versuchen wie es in der IdSMTPRelay.pas gemacht würd :
Delphi-Quellcode:
procedure TIdSMTPRelay.ResolveMXServers(AAddress: String);
var
  IdDNSResolver1: TIdDNSResolver;
  DnsResource: TResultRecord;
  LMx: TMxRecord;
  LDomain: String;
  i: Integer;
  iPref: Word;
begin
  { Get the list of MX Servers for a given domain into FMXServerList }
  if Pos('@', AAddress) > 0 then
  begin
     LDomain := Copy(AAddress, IndyPos('@', AAddress) + 1, Length(AAddress) - Pos('@', AAddress))
  end
  else
  begin
    raise EIdDirectSMTPCannotResolveMX.Create(Sys.Format(RSDirSMTPInvalidEMailAddress, [AAddress]));
  end;
  IdDNSResolver1:=TIdDNSResolver.Create(Self);
  FMXServerList.Clear;
  try
    try
      IdDNSResolver1.AllowRecursiveQueries:=True;
      if Assigned(IOHandler) and (IOHandler.ReadTimeOut <> 0) then
      begin
        // thirty seconds - maximum amount of time allowed for DNS query
        IdDNSResolver1.WaitingTime := IOHandler.ReadTimeout;
        // 30000;
      end
      else
      begin
        IdDNSResolver1.WaitingTime := 30000;
      end;
      IdDNSResolver1.QueryType := [qtMX];
      IdDNSResolver1.Host := DNSServer;
      IdDNSResolver1.Resolve(LDomain);
      if IdDNSResolver1.QueryResult.Count > 0 then
      begin
        iPref := High(Word);
        for i := 0 to IdDNSResolver1.QueryResult.Count - 1 do
        begin
          DnsResource := IdDNSResolver1.QueryResult[i];
          if (DnsResource is TMXRecord) then
          begin
            LMx := TMXRecord(DnsResource);
            // lower preference values at top of the list
            // could use AddObject and CustomSort, or TIdBubbleSortStringList
            // currently inserts lower values at top
            if LMx.Preference < iPref then
            begin
              iPref := LMx.Preference;
              FMXServerList.Insert(0, LMx.ExchangeServer);
            end
            else
            begin
              FMXServerList.Add(LMx.ExchangeServer);
            end;
          end;
        end;
      end;
      if FMXServerList.Count = 0 then
      begin
        raise EIdDirectSMTPCannotResolveMX.Create(Sys.Format(RSDirSMTPNoMXRecordsForDomain, [LDomain]));
      end;
    finally
      IdDNSResolver1.Free;
    end;
  except
    raise;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr.
Seite 2 von 2     12   

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