Tema: OAuth indy10
Ver Mensaje Individual
  #2  
Antiguo 13-07-2025
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 90
Reputación: 22
Garada Va por buen camino
Creo que Gmail aún permite contraseñas de aplicación, con eso no necesitas cambiar código. Busca información de cómo crearlas y prueba.

Para implementar OAuth vas a tener que leer bastante documentación.
Primero tienes que actualizar la versión de Indy a la última que hace unos meses añadieron soporte para el uso de tokens.
Entonces es fácil enviar un email con Oauth2, sólo hay que añadir unas líneas como estas:
Código Delphi [-]
      
      SASLEntry := SMTP.SASLMechanisms.Add;
      SASLEntry.SASL := TIdSASLXOAuth2.Create(nil);
      TIdSASLXOAuth2(SASLEntry.SASL).UserPassProvider := TIdUserPassProvider.Create(SMTP);
      TIdSASLXOAuth2(SASLEntry.SASL).UserPassProvider.Username := SmtpUser;
      TIdSASLXOAuth2(SASLEntry.SASL).UserPassProvider.Password := AccessToken;

      SMTP.AuthType := satSASL;

Pero lo complicado es obtener el Token.
Antes tienes que darte de alta en Google y obtener un ID y un secreto de cliente (tu aplicación)
Aquí tienes la documentación de Google:
https://developers.google.com/identi...-app?hl=es-419

Y además tienes que crearte el código para solicitar permiso al usuario y obtener el token.
Y una vez obtenido, renovarlo si es necesario antes de un envío.
Aquí un enlace aun proyecto de prueba con código para gestionar el token.
https://github.com/geoffsmith82/GmailAuthSMTP

Es todo un coñazo, pq si el cliente mañana se pasa a Outlook tendrás que investigar cómo darse de alta con Microsoft y las direcciones y parámetros de llamada para la solicitud OAuth.
Responder Con Cita