Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   IdSMTP.Authenticate liefert immer TRUE (https://www.delphipraxis.net/179263-idsmtp-authenticate-liefert-immer-true.html)

ByTheTime 23. Feb 2014 23:22

IdSMTP.Authenticate liefert immer TRUE
 
Hallöchen,
habe mal wieder eine Frage :roll:

Habe mir eine Funktion gebastelt, die einfach nur prüfen soll, ob die Verbindung und Authentifizierung erfolgreich war. Dazu genügen mir Host, Port, Benutzername und Passwort. Allerdings liefert mir der folgende Ausschnitt immer True zurück. Selbst wenn ich das Passwort ganz weglasse.

Delphi-Quellcode:
  try
    if IdSMTP.Connected then
      IdSMTP.Disconnect;
    IdSMTP.Connect;
    try
      Result := IdSMTP.Authenticate;
    finally
      if IdSMTP.Connected then
        IdSMTP.Disconnect;
    end;
  except
    { Fehlerhandling }
  end;
Habe ich was vermasselt, oder habe ich "IdSMTP.Authenticate" einfach falsch verstanden und es passirt dort was ganz anderes :?:

Ich bin gespannt.

Gruß

Volker Z. 23. Feb 2014 23:59

AW: IdSMTP.Authenticate liefert immer TRUE
 
Hallo,

Zitat:

Habe mir eine Funktion gebastelt, die einfach nur prüfen soll, ob die Verbindung und Authentifizierung erfolgreich war [...]
Dazu würde es ausreichen
Delphi-Quellcode:
IdSMTP.DidAuthenticate
- nach einem erfolgreichem Connect - auszuwerten. Der Aufruf
Delphi-Quellcode:
IdSMTP.Authenticate
liefert nach einem
Delphi-Quellcode:
IdSMTP.Connect
immer True, wenn die Verbindung (erfolgreich) aufgebaut wurde, ansonsten wird versucht die Verbindung aufzubauen.

Zitat:

[...] Allerdings liefert mir der folgende Ausschnitt immer True zurück. Selbst wenn ich das Passwort ganz weglasse
Da es nur ein Ausschnitt ist kann ich natürlich nichts dazu sagen wann Du das Passwort weglässt, wie Du die Verbindung aufbaust etc.

Wenn das
Delphi-Quellcode:
IdSMTP.Connect
klappt, dann liefert
Delphi-Quellcode:
IdSMTP.Authenticate
bzw.
Delphi-Quellcode:
IdSMTP.DidAuthenticate
True.

Oder habe ich da jetzt was an Deiner Fragestellung falsch verstanden?

Gruß

ByTheTime 24. Feb 2014 00:14

AW: IdSMTP.Authenticate liefert immer TRUE
 
Nein, hast schon alles richtig verstanden. Mein Ziel ist es, eine Verbindung aufzubauen und mich anzumelden. also praktisch zu prüfen ob die Host- und Benutzerdaten stimmen, ohne gleich eine Testmail zu schicken.

Sir Rufo 24. Feb 2014 00:14

AW: IdSMTP.Authenticate liefert immer TRUE
 
Schaut doch in die Quellen, dann erklärt sich so einiges (
Delphi-Quellcode:
Authenticate
ist auch sehr übersichtlich (ca. 8 Zeilen netto Code)

Und debuggen kann man das auch

Volker Z. 24. Feb 2014 00:22

AW: IdSMTP.Authenticate liefert immer TRUE
 
Hallo,

Zitat:

Nein, hast schon alles richtig verstanden. Mein Ziel ist es, eine Verbindung aufzubauen und mich anzumelden. also praktisch zu prüfen ob die Host- und Benutzerdaten stimmen, ohne gleich eine Testmail zu schicken.
Naja, dann ein einmaliges
Delphi-Quellcode:
IdSMTP.Connect
, wenn die Anmeldedaten nicht passen, wird eine Exception geworfen und gut is. Wenn Du Dir das nicht in einer eigenen Property oder so merken möchtest, dann schafft
Delphi-Quellcode:
IdSMTP.DidAuthenticate
Klarheit.

Gruß

ByTheTime 24. Feb 2014 00:26

AW: IdSMTP.Authenticate liefert immer TRUE
 
Ah okay. Hatte irgendwie einen Denkfehler. Geht ja auch viel einfach :stupid: Aber als ich gesehen habe, das Authenticate einen Boolean als Rückgabewert hat, bin ich sofort drauf angesprungen :lol:

Volker Z. 24. Feb 2014 01:02

AW: IdSMTP.Authenticate liefert immer TRUE
 
Hallo,

Zitat:

Aber als ich gesehen habe, das Authenticate einen Boolean als Rückgabewert hat, bin ich sofort drauf angesprungen
Naja, in der OH steht schon, dass da ein boolscher Wert zurückkommt. Aber da steht auch:
Zitat:

Performs account authentication on the SMTP server.
Und das bedeutet doch, dass zuvor die Verbindung aufgebaut wird - besteht die Verbindung bereits, ist dies dann auch nicht mehr nötig.

Ein Blick in die Sourcen - wie von Sir Rufo vorgeschlagen - zeigt auch schnell auf, dass bei einem erfolgreichem Login (we have a go) nur diese Info zurückgeliefert wird.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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