AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Indy10, SSLPalin, SMTP, "Authentification required"
Thema durchsuchen
Ansicht
Themen-Optionen

Indy10, SSLPalin, SMTP, "Authentification required"

Ein Thema von hoika · begonnen am 26. Apr 2013 · letzter Beitrag vom 29. Apr 2013
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

Indy10, SSLPalin, SMTP, "Authentification required"

  Alt 26. Apr 2013, 12:11
Hallo #,

ich beziehe mich mit meiner Frage auf folgenden Thread

Der Fehler heisst "Authentication error", nicht wie es oben steht.

http://www.delphipraxis.net/174452-x...nt-senden.html

Ich muss einem Mailserver über SSL (Plain) eine Mail schicken.
Code sieht so aus.
Man sieht am Code, ich probier verzweifelt alles aus ...

Delphi-Quellcode:
procedure TForm1.ButtonMailClick(Sender: TObject);
var
  SMTP: TIdSMTP;
  Msg: TIdMessage;
begin

  IdUserPassProvider1.Username := EditNutzerName.Text;
  IdUserPassProvider1.Password := EditPassWort.Text;

  IdSASLLogin1.UserPassProvider := IdUserPassProvider1;

  SMTP := TIdSMTP.Create(nil);
  Msg := TIdMessage.Create;
  try
    SMTP.PipeLine := True;



// SMTP.AuthType := satDefault;
    SMTP.ValidateAuthLoginCapability := False;

    SMTP.IOHandler := CreateSSLHandler(SMTP); // siehe unten

// SMTP.AuthType := satDefault;
    SMTP.AuthType := satSASL;

// SMTP.SASLMechanisms.Add.SASL := IdSASLLogin1;

    SMTP.SASLMechanisms.Add.SASL := IdSASLPlain1;

    SMTP.UseTLS := utUseImplicitTLS;
    SMTP.Host := EditServer.Text;
    SMTP.Port := StrToInt(EditPortSMTP.Text);
    SMTP.Username := EditNutzerName.Text;
    SMTP.Password := EditPassWort.Text;
    SMTP.Connect;

    Msg.From.Address:= EditSourceMail.Text;
    with Msg.Recipients.Add do
    begin
      Address := EditTargetMail.Text;
    end;
    Msg.Subject:= 'Test';

    SMTP.Send(Msg); <<-- Exception

    SMTP.Disconnect;
  finally
    Msg.Free;
    SMTP.Free;
  end;
end;
Hangel ich mich durch den Code, komme ich hier hin

unit IdSMTPBase
Delphi-Quellcode:
procedure TIdSMTPBase.SendNoPipelining(AMsg: TIdMessage; const AFrom: String; ARecipients: TIdEMailAddressList);
var
  LCmd: string;
begin
  LCmd := MAILFROM_CMD + '<' + AFrom + '>'; {Do not Localize}
  if FUseVerp then begin
    if Capabilities.IndexOf(CAPAVERP) > -1 then begin
      LCmd := LCmd + ' VERP'; {Do not Localize}
    end else begin
      LCmd := LCmd + ' XVERP'; {Do not Localize}
    end;
    if FVerpDelims <> 'then begin
     LCmd := LCmd + '=' + FVerpDelims; {Do not Localize}
    end;
  end;
  SendCmd(RSET_CMD);

//// hier knallts im SendCmd


  SendCmd(LCmd, MAILFROM_ACCEPT);
end;

function TForm1ClickTest.CreateSSLHandler(Owner: TComponent): TIdSSLIOHandlerSocketOpenSSL;
begin
  Result := TIdSSLIOHandlerSocketOpenSSL.Create(Owner);
  Result.OnVerifyPeer := SSLVerifyPeerEventHandler;
  Result.SSLOptions.Method := sslvSSLv3;
  Result.SSLOptions.VerifyMode := [sslvrfClientOnce];
end;

Das PerformSASLLogin ist bereits erfolgreich verlaufen.

Was kann ich noch tun ?

Danke


Heiko
Heiko

Geändert von hoika (26. Apr 2013 um 16:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Indy10, SSLPalin, SMTP, "Authentification required"

  Alt 26. Apr 2013, 14:52
Vor dem "FROM"-Command muss das Kommando "HELO" (ohne User/PW) bzw. "EHLO" (Anmeldung mit User + PW) stattgefunden haben.
In deinem Fall brauchst du "EHLO" = Extended Hello (erweiterte Anmeldung)

Setze mal einen Breakpoint auf das Connect und prüfe ob "EHLO" verwendet wird.
Es müsste auch das Property UseEhlo geben, das per default = True sein sollte. (so zumindest in Indy 9)

Nach deiner Beschreibung scheint die SSL-Verbindung korrekt aufgebaut zu sein, aber der Client ist nicht sauber am Mailserver angemeldet.
Ausserdem noch einen Breakpoint auf die Methode Authenticate setzen.
Dort müsstest du sehen wie der Befehl "AUTH LOGIN " mit UserName + Passwort den den Server geschickt wird.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Indy10, SSLPalin, SMTP, "Authentification required"

  Alt 26. Apr 2013, 15:59
Hallo,

das UseEhlo ist True,
das PerformSASLLogin ist Teil des Authenticate und wird erfolgreich, also ohne Fehler durchlaufen.

Ich habe im ersten Eintrag das CreateSSLHandler noch eingetragen.

Fehler liegt bei hier knallts im SendCmd .


;(

Danke


Heiko
Heiko

Geändert von hoika (26. Apr 2013 um 16:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Indy10, SSLPalin, SMTP, "Authentification required"

  Alt 26. Apr 2013, 20:17
Wie schaut's denn aus, wenn du dich mit einem ausgereiften EMail - Client (Mozilla Thunderbird) mit dem SMTP-Server verbindest?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Indy10, SSLPalin, SMTP, "Authentification required"

  Alt 29. Apr 2013, 08:46
Hallo,

Thunderbird geht.
Outlook nicht, das wollen sie noch ändern.

Mit Outlook sie ähnlich aus,
Connect (Verbindung) klappt
das Senden der Testmail war nicht erfolgreich.


Heiko
Heiko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Indy10, SSLPalin, SMTP, "Authentification required"

  Alt 29. Apr 2013, 09:06
Hallo,

Vor dem "FROM"-Command muss das Kommando "HELO" (ohne User/PW) bzw. "EHLO" (Anmeldung mit User + PW) stattgefunden haben.
In deinem Fall brauchst du "EHLO" = Extended Hello (erweiterte Anmeldung)

Ich habe jetzt EHLO=True und HeloName meinen Benutzernamen.
Den HeloName hatte ich glatt vergessen !.
Er meldet sich mit OK AUTH PLAIN.

Ich habe allerdings kein Passwort angegeben.
Laut Internet steht dort nur EHLO "Sender", Sender=Mail-Adresse.
Wie muss denn der String mit Nutzenamen und Passwort aussehen ?

Danke


Heiko
Heiko

Geändert von hoika (29. Apr 2013 um 09:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Indy10, SSLPalin, SMTP, "Authentification required"

  Alt 29. Apr 2013, 09:32
Er meldet sich mit OK AUTH PLAIN.
Der Client muss/darf sich dann mit
Code:
AUTH PLAIN xxxxxxxxxxxxxxxxxxxxxxxxxxxx=
anmelden.
Die xxxxxx stehen für Username und Passwort die mit BASE64 kodiert werden.
Genauere Info gibt es z.B. hier:
http://www.freebsdwiki.net/index.php...UTH_via_telnet
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Indy10, SSLPalin, SMTP, "Authentification required"

  Alt 29. Apr 2013, 10:50
Hallo,

ja genauso wird es gemacht.
Und der Server sagt auch OK.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 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