Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi SASL mit TIdPOP3 und TD Express (https://www.delphipraxis.net/76924-sasl-mit-tidpop3-und-td-express.html)

svero 12. Sep 2006 09:36


SASL mit TIdPOP3 und TD Express
 
Hallo allerseits!

Das Erzeugen einer Instanz von TIdPOP3 unter Turbo Delphi Explorer ist ja kein Thema und funktioniert soweit auch ganz gut. Allerdings habe ich ein Problem, die SASL-Unterstützung ohne Eigenschafteneditor zu konfigurieren. Nach den Informationen im Netz, die ich so auf meiner Suche gefunden habe, wird die Eigenschaft "SASLMechanisms" über den Eigenschafteneditor gesetzt, was natürlich nur funktioniert, wenn man TIdPOP3 über den visuallen Forms-Editor einfügt. Das geht ja bekanntlich nicht bei der Explorer-Ausgabe von Turbo Delphi (der "Trick" mit dclusr.dpk hat auch nicht wirklich funktioniert). Ich hatte mir auch mal die Quellen von Indy 10 angesehen, komme damit aber auch nicht weiter.

Ich würde mich sehr freuen, wenn mir hier jemand auf die Sprünge helfen würde. Die Installation von Indy 10 in Delphi 2005 Personal, um zu sehen, wie es der Eigenschafteneditor macht, hat leider trotz des Tutorials hier nicht funktioniert (siehe mein Artikel dort).

Vielen Dank im Voraus!

Gruß,
Sven

meolus 19. Dez 2006 20:33

Re: SASL mit TIdPOP3 und TD Express
 
Hi,

hast du schon eine Lösung?
Hab jetzt nach ner Weile folgenden Code zusammen:
Delphi-Quellcode:
var
  IdPOP3: TIdPOP3;
  IdSSLIO: TIdSSLIOHandlerSocketOpenSSL;

[ ... ]

  IdPOP3 := TIdPOP3.Create(MainForm);
  try
    IdPOP3.AuthType := TIdPOP3AuthenticationType(CBAuthType.ItemIndex);
    IdPOP3.Host := EdHost.Text;
    IdPOP3.Port := StrToInt(EdPort.Text);
    IdPOP3.Password := MEPassword.Text;
    IdPOP3.Username := EdLogin.Text;

//#################################################################
//#################################################################
    if Ord(IdPOP3.AuthType) = 2 then begin
      IdPOP3.SASLMechanisms.Add;
      IdPOP3.SASLMechanisms.Items[0].SASL := TIdSASLAnonymous.Create;
    end;
//#################################################################
//#################################################################

[ ... ]

    try
      IdPOP3.Connect;
    except
      on EIdDoesNotSupportAPOP do begin
        bError := true;
        MessageBox(Handle, PChar('Der Server unterstützt die Authentifizierung'+
         ' mittels "APOP" nicht. (Es wurde keine Timestamp übermittelt.)'),
         PChar('Fehler - Verbindung fehlgeschlagen'), $00000010);
      end;
      on EIdSASLMechNeeded do begin
        bError := true;
        MessageBox(Handle, PChar('Es wurde kein SASL-Mechanismus für den Login'+
         ' ausgewählt.'), PChar('Fehler - Verbindung fehlgeschlagen'),
         $00000010);
      end;
    end;

[ ... ]

  finally
    IdPOP3.Free;
  end;
Und zwar wenn in den Teil zwischen den zwei fetten Kommentaren mit den zwei "IdPOP3.SASLMechanisms" rauslasse, dann bekomme ich wenn ich AuthType = atSASL habe jedes mal die Exception "EIdSASLMechNeeded".
Daraufhin hab ich die besagten Zeilen eingefügt und ich bekomme die Exception nicht mehr. Dafür verwundert es mich doch egal, welches "SASLMechanisms.Items" ich hinzufüge (TIdSASLAnonymous, TIdSASLLogin, TIdSASLPlain ... ) scheint der Login zu funktionieren, auch wenn mir IdPOP3.Capabilities diese SASL-Methode(n) nicht auflistet?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz