Buenas, estoy intentando enviar un mail desde mi aplicación Delphi.
Trabajo con Delphi XE5, Indy 10.6.0.5040
Pongo el código fuente. Al momento de enviar el mail aparecen los errores. He pasado por diversos errores, pero el último ha sido este:
Username and Password not accepted. Learn more at https://support.google.com/mail/?p=BadCredentials g31sm15095354qte.78 - gsmtp
Otros errores que he tenido, mientras hacía cambios y cosas han sido:
Error connecting with SSL.
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Need SASL mechanisms to login with it!!
Ya se me quemaron todas las ideas. Intento enviar a través del SMTP de mi GMail.
procedure TfrmPrincipal.btnEnviarMailClick(Sender: TObject);
var
Smtp : TidSMTP;
ManejadorSSL : TidSSLIOHandlerSocketOpenSSL;
Mensaje: TIdMessage;
idSASLLogin:TIdSASLLogin;
idUserPassProvider:TIdUserPassProvider;
begin
ManejadorSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
with ManejadorSSL do
begin
Destination := 'smtp.gmail.com:465'; //'smtp.gmail.com:587';
Host := 'smtp.gmail.com';
MaxLineAction := maException;
Port := 465; //587;
// SSLOptions.Method := sslvSSLv3;
SSLOptions.Method := sslvSSLv23;
SSLOptions.SSLVersions := [sslvSSLv23];
SSLOptions.Mode := sslmUnassigned;
SSLOptions.VerifyMode := [];
SSlOptions.VerifyDepth := 0;
end;
Smtp := TIdSMTP.Create( nil );
idSASLLogin := TIdSASLLogin.Create(Smtp);
idUserPassProvider := TIdUserPassProvider.Create(idSASLLogin);
idSASLLogin.UserPassProvider := idUserPassProvider;
idUserPassProvider.Username := 'santiago14@gmail.com';
idUserPassProvider.Password := 'mipass';
with Smtp do
begin
IoHandler := ManejadorSSL;
Host := 'smtp.gmail.com';
Port := 465; // 25;
SASLMechanisms.Add.SASL:=IdSASLLogin;
AuthType:=satSASL;
ValidateAuthLoginCapability:=True;
Username := 'santiago14@gmail.com'; //Usuario del correo SMTP
Password := 'mipass'; //Pas del correo POP
UseTLS := utUseImplicitTLS; //utUseExplicitTLS;
end;
Mensaje := TIdMessage.Create(nil);
with Mensaje do
begin
Clear;
Subject := 'Mi primer mensaje'; //Asunto del mensaje
Body.Text := 'Hola. Este es mi primer mensaje'; //Cuerpo del mensaje. Podría ser HTML
Recipients.Add;
Recipients.Items[0].Address := 'srusso_19bj@yahoo.com'; //Mail destino. Va uno por Address
end;
try
Smtp.Connect;
if smtp.Connected then
begin
// btnEnviarMail.Enabled:=False;
smtp.Send(Mensaje);
smtp.Disconnect;
// btnEnviarMail.Enabled:=True;
Application.MessageBox('Correo enviado', 'Correos', MB_OK);
end;
except
on e:Exception do
begin
Log(e.Message);
mErrores(e, 'No se envió el mail.', 'Correos');
end;
end;
FreeAndNil(Smtp);
FreeAndNil(Mensaje);
FreeAndNil(ManejadorSSL);
end;
Espero puedan ayudarme. Si necesitan mas datos, los tengo.
Gracias.