Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Envío de mail con Indy (https://www.clubdelphi.com/foros/showthread.php?t=94241)

santiago14 16-10-2019 18:18:37

Envío de mail con Indy
 
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:

Código:

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:
Código:

Error connecting with SSL.
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

Código:

Need SASL mechanisms to login with it!!
Ya se me quemaron todas las ideas. Intento enviar a través del SMTP de mi GMail.

Código Delphi [-]
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.

Casimiro Notevi 16-10-2019 18:54:07

Prueba con sslvSSLv1 o el 2, creo recordar que no vale el sslvSSLv23

santiago14 16-10-2019 22:33:08

Muy bien, el código que puse arriba funciona muy bien. Pero debo poner en Google "Permitir el acceso de aplicaciones poco seguras" en SI. Me indica que el acceso de mi aplicación al mail no es del todo bueno.
¿Hay manera de mejorar esa seguridad?


Quedo a la espera. Gracias.


La franja horaria es GMT +2. Ahora son las 04:45:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi