Einzelnen Beitrag anzeigen

Benutzerbild von meolus
meolus

Registriert seit: 28. Aug 2005
Ort: Aachen
20 Beiträge
 
Delphi 2006 Professional
 
#2

Re: SASL mit TIdPOP3 und TD Express

  Alt 19. Dez 2006, 20:33
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?!
Real programmers don't comment their code;
if it was hard to write, it should be hard to read.
  Mit Zitat antworten Zitat