Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Enviar correos a través de Gmail (https://www.clubdelphi.com/foros/showthread.php?t=94963)

Angel.Matilla 25-11-2020 12:09:01

Enviar correos a través de Gmail
 
Buenos días. He estado buscando los hilos que hablan sobre este tema por el foro pero no consigo que me funcione el envío de correos.

Estoy usando C++ Builder 6 con los componentes Indy 10.6.2.0 y tengo copiadas las dos librerías libeay32.dll y ssleay32.dll en la carpeta del ejecutable. tengo puestos un TIdSMTP (Enviar), un TIdSSLIOHandlerSocketOpenSSL (SSLIOHandler) y un TIdMessage (Correo). En los dos primeros tengo hechas estas definiciones:
Código:

Correo->From->Address = <mi dirección>;
Correo->From->Name    = "De papel";

Enviar->Host    = "smtp.gmail.com";
Enviar->Password = <mi clave>;
Enviar->Port    = 465;
Enviar->Username = <mi dirección>;

SSLIOHandler->Port        = 465;
SSLIOHandler->Host        = "smtp.gmail.com";
SSLIOHandler->Destination = "smtp.gmail.com:" + IntToStr(SSLIOHandler->Port);

Y, además, en el TIdSSLIOHandlerSocketOpenSSL tengo puesto en SSLOptions Method = sslvSSLv2, aunque también he probado con sslvSSLv3. Para las definiciones me he guiado por los datos que facilita la definición de la cuenta en Thunderbird.

Cuando quiero lanzar un correo uso este código:
Código:

try
{
    fDatos->Enviar->Connect();
}
catch(...)
{
    fDatos->Enviar->Disconnect();
    MessageDlg("No está disponible la conexión a\r\n" + AnsiString(fDatos->Enviar->Host), mtError, TMsgDlgButtons() << mbCancel, 0);
    return;
}

No pongo más código porque el error me aparece aquí, cuando intento conectar. Me salta este error:

En otros casos que no uso Gmail me funciona bien el sistema pero en este caso concreto me tienen mosqueado dos cosas que he visto en la definición de la cuenta:
  • En seguridad de la conexión pone SSL/TLS
  • En método de identificación pone OAuth2
No sé si el erro puede tener que ver con estos parámetros pero es que no veo como introducirlos en los elementos TIdSMTP y TIdSSLIOHandlerSocketOpenSSL.

Angel.Matilla 25-11-2020 12:24:53

He seguido probando y poniendo en TIdSSLIOHandlerSocketOpenSSL SSLOptions->Mode = sslmUnassigned he probado jugando con los métodos sslvSSLv2 y sslvSSLv3.
Con sslvSSLv2 me salta este error:


y con sslvSSLv3 este otro:

pero no consigno que se conecte al servidor.

Neftali [Germán.Estévez] 25-11-2020 13:05:44

POr lo que recuerdo los protocolos deben ir con las últimas versiones de SSL.
¿Has modificado la configuración de la cuenta en GMail?
Por lo que recuerdo hay un parámetro de conexión que permite enviar correos desde aplicaciones de terceros. Si no se modifica no podrás enviar. Al menos antes era así.

Al final de este hilo se habla del tema.
http://www.clubdelphi.com/foros/showthread.php?t=90053

Angel.Matilla 25-11-2020 16:50:08

Sí, efectivamente hay un protocolo dentro de Gmail para autorizar el uso de aplicaciones externas pero ahí ya lo tengo activado. He hecho otra prueba poniendo en el método sslvTLSv1_2 y, de momento, al conectarse no da error. Tengo que comprobar que la enviar el mensaje también funciona bien.

Angel.Matilla 25-11-2020 17:21:24

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 539236)
POr lo que recuerdo los protocolos deben ir con las últimas versiones de SSL.
¿Has modificado la configuración de la cuenta en GMail?
Por lo que recuerdo hay un parámetro de conexión que permite enviar correos desde aplicaciones de terceros. Si no se modifica no podrás enviar. Al menos antes era así.

Al final de este hilo se habla del tema.
http://www.clubdelphi.com/foros/showthread.php?t=90053

Es cierto. Me sale este mesaje:
Cita:

Username and Password not accepted. Learn more at
https://support.google.com/mail/?p=BadCredentials w11sm5054026wmg.36 - gsmtp
Pensaba que lo tenía activado pero no y como para la verificación en dos pasos hace falta el móvil y me lo he dejado en casa probaré mañana.

Angel.Matilla 26-11-2020 11:21:52

Efectivamente es simplemente conceder permisos para que programas externos puedan "trabajar" con Gmail; basta con acceder a
https://myaccount.google.com/lesssecureapps. No sé de dónde me saqué lo del móvil.


La franja horaria es GMT +2. Ahora son las 07:02:57.

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