Ir al contenido



Foto

Envío de mail con Indy


  • Por favor identifícate para responder
3 respuestas en este tema

#1 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 328 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 16 octubre 2019 - 10:24

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: 

php
  1. 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:

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


php
  1. Need SASL mechanisms to login with it!!

 
Ya se me quemaron todas las ideas. Intento enviar a través del SMTP de mi GMail.
 
 

delphi
  1. procedure TfrmPrincipal.btnEnviarMailClick(Sender: TObject);
  2. var
  3. Smtp : TidSMTP;
  4. ManejadorSSL : TidSSLIOHandlerSocketOpenSSL;
  5. Mensaje: TIdMessage;
  6. idSASLLogin:TIdSASLLogin;
  7. idUserPassProvider:TIdUserPassProvider;
  8. begin
  9. ManejadorSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  10. with ManejadorSSL do
  11. begin
  12. Destination := 'smtp.gmail.com:465'; //'smtp.gmail.com:587';
  13. Host := 'smtp.gmail.com';
  14. MaxLineAction := maException;
  15. Port := 465; //587;
  16.  
  17. // SSLOptions.Method := sslvSSLv3;
  18. SSLOptions.Method := sslvSSLv23;
  19. SSLOptions.SSLVersions := [sslvSSLv23];
  20.  
  21. SSLOptions.Mode := sslmUnassigned;
  22. SSLOptions.VerifyMode := [];
  23. SSlOptions.VerifyDepth := 0;
  24. end;
  25.  
  26.  
  27.  
  28.  
  29.  
  30. Smtp := TIdSMTP.Create( nil );
  31.  
  32. idSASLLogin := TIdSASLLogin.Create(Smtp);
  33. idUserPassProvider := TIdUserPassProvider.Create(idSASLLogin);
  34.  
  35. idSASLLogin.UserPassProvider := idUserPassProvider;
  36. idUserPassProvider.Username := 'santiago14@gmail.com';
  37. idUserPassProvider.Password := 'mipass';
  38.  
  39.  
  40. with Smtp do
  41. begin
  42. IoHandler := ManejadorSSL;
  43. Host := 'smtp.gmail.com';
  44. Port := 465; // 25;
  45. SASLMechanisms.Add.SASL:=IdSASLLogin;
  46. AuthType:=satSASL;
  47. ValidateAuthLoginCapability:=True;
  48. Username := 'santiago14@gmail.com'; //Usuario del correo SMTP
  49. Password := 'mipass'; //Pas del correo POP
  50. UseTLS := utUseImplicitTLS; //utUseExplicitTLS;
  51. end;
  52.  
  53. Mensaje := TIdMessage.Create(nil);
  54. with Mensaje do
  55. begin
  56. Clear;
  57. Subject := 'Mi primer mensaje'; //Asunto del mensaje
  58. Body.Text := 'Hola. Este es mi primer mensaje'; //Cuerpo del mensaje. Podría ser HTML
  59. Recipients.Add;
  60. Recipients.Items[0].Address := 'srusso_19bj@yahoo.com'; //Mail destino. Va uno por Address
  61. end;
  62.  
  63. try
  64. Smtp.Connect;
  65. if smtp.Connected then
  66. begin
  67. // btnEnviarMail.Enabled:=False;
  68. smtp.Send(Mensaje);
  69. smtp.Disconnect;
  70. // btnEnviarMail.Enabled:=True;
  71. Application.MessageBox('Correo enviado', 'Correos', MB_OK);
  72. end;
  73. except
  74. on e:Exception do
  75. begin
  76. Log(e.Message);
  77. mErrores(e, 'No se envió el mail.', 'Correos');
  78. end;
  79. end;
  80.  
  81. FreeAndNil(Smtp);
  82. FreeAndNil(Mensaje);
  83. FreeAndNil(ManejadorSSL);
  84. end;

 
Espero puedan ayudarme. Si necesitan mas datos, los tengo.
Gracias.

  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.130 mensajes
  • LocationMéxico

Escrito 16 octubre 2019 - 10:42

Necesitas configurar tu cuenta de GMail para que acepte peticiones de clientes de correo de terceras partes. Esto se configura en la parte de seguridad de tu cuenta GMail.

 

Saludos


  • 0

#3 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 328 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 16 octubre 2019 - 02:31

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.


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.130 mensajes
  • LocationMéxico

Escrito 16 octubre 2019 - 02:43

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.

 

Lamentablemente no, es una de las restricciones que tiene no solo GMail, también Outlook y Yahoo y eso, a mi parecer, es por la proliferación de apps móviles que abusan del mecanismo de envío de correos.

 

Saludos


  • 0