In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Sample GMail

Foro público de Xailer en español
Responder
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Sample GMail

Mensaje por XeviCOMAS »

Estoy tratando de hacer andar el ejemplo GMail, pero por más que lo intento, no puedo.
He configurado el API Google segun se especifica en la ayuda de Xailer, pero creo que falta actualizar la ayuda, ya que hay algun parámetro que ya no és válido al dirigirte a https://console.developers.google.com/p ... is/library.
Tipo de aplicación 'Otro' no está, yo le le puesto 'App de escritorio'
Hay que configurar la 'Pantalla de consentimiento'...
Bien, he hecho TODO lo que he podido hacer, configurar y probar, pero sigue sin funcionar.
Dispongo del ClientID y del SecretID

En la versión que tengo mi aplicación Xailer6, me lanza la ventana donde se me piden los datos para autenticarme en Google, pero con logearme con un usuario que he dado los permisos en la Pantalla de consentimiento del API Google, me lanza el mensaje 'Es posible que el navegador o la aplicación no sean seguras. Prueba de utilizar otro navegador...' y finalmente el error 4: access denied!

Bien, lo he probado con Xailer7 PERSONAL, y después de instalar el pack Edge y reiniciar el pc...
No me llega a mostrar la ventana para loguearme en Google, que directamente me lanza el error 4: access denied!


¿Estoy haciendo alguna cosa mal???
¿Alguien está utilizando la clase TGMail ???

Para envios de mails con GMail va a ser necesario utilizar oAuth 2.0 a partir de 1 de junio, por lo que estaria bien poder utilizar esta clase para salvar este escollo.

Muchas gracias.
Un Saludo,
Xevi.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Sample GMail

Mensaje por ignacio »

Me temo que Google ha vuelto a cambiar todo, una vez más:

Créditos Pedro Gil:

1.6.4.7 TGmailSend
NOTA: Esta clase solo funciona en modo multi-hilo. Para ello, deberá desmarcar en las Propiedades de su proyecto la librería hbvm y enlazar la librería hbvmmt. Vea la siguiente

El primer paso para poder realizar el envío es crear un Google API Console Project accediendo a la siguiente dirección de Internet: https://console.developers.google.com/p ... is/library. Desde allí deberá crear un nuevo proyecto, y una vez creado, seleccionar la opción de menú (en la barra lateral) API y servicios > Pantalla de consentimiento de OAuth. Rellene la información que se solicita y complete todos los pasos.
A continuación, seleccione la opción de menú API y servicios > Credenciales y pulse CREAR CREDENCIALES para ID de cliente OAuth. Cuando le pregunte el Tipo de aplicación, indique App de escritorio y rellene el campo Nombre.
Por cada ID de cliente OAuth Google le suministrará dos datos muy importantes que son el ClientID y el Secret ID. Estos dos valores deberá introducirlos en las propiedades cClientID y cSecretID del control TGmailSend. No obstante, hace falta un dato adicional que es el Token, del que hablaremos más adelante.
El siguiente paso es habilitar el uso de Gmail API para el proyecto recién creado. Para ello, deberá seleccionar la opción de menú API y servicios > Panel y pulsar HABILITAR API Y SERVICIOS. Después, seleccione Gmail API y pulse HABILITAR.
La primera vez que intente enviar un mensaje de correo a través de TGmailSend, el programa le mostrará al usuario la clásica página Web de inicio de sesión de Gmail pidiendo al usuario las credenciales de acceso e indicándole que un determinado servicio (su proyecto) quiere enviar un correo electrónico en su nombre. Si el usuario introduce correctamente sus credenciales y además autoriza que el proyecto envíe el correo en su nombre, el correo se debería enviar sin problemas. (Puede que le aparezca el mensaje de que no se ha podido establecer una conexión con el servidor en 127.0.0.1. Aun así, compruebe si se ha enviado y, en ese caso, ignore dicho mensaje.)
Una vez enviado el correo, se generará un Token, que se almacena en la propiedad cToken del control TGmailSend. Si antes de destruir el control, guarda dicho Token y lo asigna a la propiedad cToken antes de volver a enviar un correo, ya no se le pedirá al usuario de nuevo sus credenciales. (Vea el ejemplo \samples\gmail.) Tenga en cuenta que los token pueden caducar y por lo tanto se puede producir un error en el envío, circunstancia que deberá controlar para obtener un nuevo token.
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Sample GMail

Mensaje por jfgimenez »

Xevi,

aparte de lo anterior, hay un cambio todavía más importante: Google ya no permite utilizar ningún navegador embebido para acceder a la cuenta. Eso significa que no se puede usar ni TWebBrowser ni TWebView para que el usuario acceda. AHora necesariamente hay que lanzar un navegador externo "reconocido" por Google (Firefox, Chrome, Edge, Safari, etc.).

En la próxima versión de Xailer ya está contemplado este cambio, pero en la actual 7.2 no. Así que, por mucho que pruebes me temo que no vas a conseguir hacerlo funcionar.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Sample GMail

Mensaje por XeviCOMAS »

Gracias por las respuestas.

Ignacio, así es como lo he ido haciendo.

José, me temo pues que me queda apenas 3 meses de seguir utilizando el envio de mails directamente con mi aplicación.
Habrá de esperar a la versión que saqueis, ponerla a prueba y ver que cambios deberé hacer para seguir utilizando este sistema en mi aplicación.

La verdad, es que tal como lo tengo funcionando, es darle a un click y se envia el mail en un plis-plas.
Un Saludo,
Xevi.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Sample GMail

Mensaje por jfgimenez »

Xevi,

con la nueva versión no tienes que cambiar nada en tu código. La única diferencia la va a notar el usuario, que cuando tiene que acceder a su cuenta ahora le salta el navegador por defecto en vez de una ventana del programa con un WebBrowser
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Sample GMail

Mensaje por jfgimenez »

Y por cierto, usando el mismo sistema oAuth2 para autenticarse, la próxima versión de Xailer tiene también las clases TGoogleDrive y TDropbox, que permite subir y bajar archivos de las cuentas del usuario.

Esto sirve para p.ej. subir copias de seguridad directamente a la nube, sin que el usuario tenga que tener instalado el cliente de GoogleDrive o Dropbox en su ordenador. Además, es una medida extra de protección de los datos de nuestros programas frente a un ataque de ransomware, ya que si no está instalado el cliente correspondiente, el ransom no puede cifrar ningún archivo ;-)
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Re: Sample GMail

Mensaje por Carlos Ortiz »

Interesante José, gracias

jfgimenez escribió: Jue Mar 10, 2022 6:00 pm Y por cierto, usando el mismo sistema oAuth2 para autenticarse, la próxima versión de Xailer tiene también las clases TGoogleDrive y TDropbox, que permite subir y bajar archivos de las cuentas del usuario.

Esto sirve para p.ej. subir copias de seguridad directamente a la nube, sin que el usuario tenga que tener instalado el cliente de GoogleDrive o Dropbox en su ordenador. Además, es una medida extra de protección de los datos de nuestros programas frente a un ataque de ransomware, ya que si no está instalado el cliente correspondiente, el ransom no puede cifrar ningún archivo ;-)
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Sample GMail

Mensaje por XeviCOMAS »

Bien, estaré atento a la próxima revisión/versión para poder testarlo.

De momento, y una alternativa que me va a servir para seguir enviando los mails directamente desde mis aplicaciones... Yahoo o Hotmail.
No utiliza oAuth 2.0 y con la seguridad SSL (y una contraseña para aplicaciones en el caso de Yahoo) funcionan perfectamente.

Será el caso de migrar/crear cuentas de correo en Yahoo/Hotmail e ir utilizando esas plataformas.


Gracias por vuestro tiempo.
Un Saludo,
Xevi.
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Sample GMail

Mensaje por XeviCOMAS »

Tengo un problema al enviar mensajes con Yahoo, si el texto del mensaje és en HTML
Éste cuerpo de mensaje se muestra con símbolos raros, cuandos e trata de caracteres "especiale" como letras acentuadas... no en GMail ni tampoco en Hotmail, pero SI en Yahoo.

¿Alguien puede decirme como hacer para que se vea correctamente???

Gracias por vuestro tiempo.
Un Saludo,
Xevi.
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Sample GMail

Mensaje por XeviCOMAS »

Bien, para lo que necesito me sirve de momento...

Código: Seleccionar todo

FUNCTION xcm_AsciiToHtml( cMsg )
//https://ascii.cl/htmlcodes.htm
   Local n, nSeconds := Seconds()
   cMsg := StrTran( cMsg, "’", "'" )
   cMsg := StrTran( cMsg, "–", "-" )  //–
/*   cMsg := StrTran( cMsg, "À", "À" ) //À
   cMsg := StrTran( cMsg, "Ó", "Ó" ) //Ó
   cMsg := StrTran( cMsg, "à", "à" ) //à
   cMsg := StrTran( cMsg, "á", "á" ) //á
   cMsg := StrTran( cMsg, "ç", "ç" ) //ç
   cMsg := StrTran( cMsg, "è", "è" ) //è
   cMsg := StrTran( cMsg, "é", "é" ) //é
   cMsg := StrTran( cMsg, "í", "í" ) //í
   cMsg := StrTran( cMsg, "ï", "ï" ) //ï
   cMsg := StrTran( cMsg, "ò", "ò" ) //ò
*cMsg := StrTran( cMsg, Chr(242), "ò" ) //ò
   cMsg := StrTran( cMsg, "ó", "ó" ) //ó
   cMsg := StrTran( cMsg, "ü", "ü" ) //ü
*/
   For n:=160 To 255
      cMsg := StrTran( cMsg, Chr(n), "&#"+ToString(n)+";" )
   Next
   cMsg := StrTran( cMsg, "“", "“" )  //“
   cMsg := StrTran( cMsg, "”", "”" )  //”
   cMsg := StrTran( cMsg, "·", "•" )
   cMsg := StrTran( cMsg, "€", "€" )  //€
LogDebug( Seconds() - nSeconds )
Return cMsg
Para Yahoo debo parsear el texto, no así con Outlook/Hotmail
Pero por si algun cliente utiliza el mail de Yahoo, así me funciona
Un Saludo,
Xevi.
Responder