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