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.