![]() |
Indy10, SSLPalin, SMTP, "Authentification required"
Hallo #,
ich beziehe mich mit meiner Frage auf folgenden Thread Der Fehler heisst "Authentication error", nicht wie es oben steht. ![]() 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:
Hangel ich mich durch den Code, komme ich hier hin
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; 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 |
AW: Indy10, SSLPalin, SMTP, "Authentification required"
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
Delphi-Quellcode:
und prüfe ob "EHLO" verwendet wird.
Connect
Es müsste auch das
Delphi-Quellcode:
geben, das per default = True sein sollte. (so zumindest in Indy 9)
Property UseEhlo
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
Delphi-Quellcode:
setzen.
Authenticate
Dort müsstest du sehen wie der Befehl "AUTH LOGIN " mit UserName + Passwort den den Server geschickt wird. |
AW: Indy10, SSLPalin, SMTP, "Authentification required"
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 |
AW: Indy10, SSLPalin, SMTP, "Authentification required"
Wie schaut's denn aus, wenn du dich mit einem ausgereiften EMail - Client (Mozilla Thunderbird) mit dem SMTP-Server verbindest?
|
AW: Indy10, SSLPalin, SMTP, "Authentification required"
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 |
AW: Indy10, SSLPalin, SMTP, "Authentification required"
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 |
AW: Indy10, SSLPalin, SMTP, "Authentification required"
Zitat:
Code:
anmelden.
AUTH PLAIN xxxxxxxxxxxxxxxxxxxxxxxxxxxx=
Die xxxxxx stehen für Username und Passwort die mit BASE64 kodiert werden. Genauere Info gibt es z.B. hier: ![]() |
AW: Indy10, SSLPalin, SMTP, "Authentification required"
Hallo,
ja genauso wird es gemacht. Und der Server sagt auch OK. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr. |
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