Configuración de PHPMailer con OAuth2

Hola ,

Estoy intentando configurar el OAuth2.

Fui a obtener los tokens a

https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2

Llegué hasta los pasos de conseguir el ‘oauth2_client_id’ y ‘oauth2_client_secret’ .

El problema lo tengo para obtener el ‘oauth2_refresh_token’

Me estaría faltando el $redirectUri que en el ejemplo es
$redirectUri = ‘http://localhost/phpmailer/get_oauth_token.php’;

En nuestra instalacion,
localhost/ es /var/www/html/
localhost/upe es /src/siu/www

mientras que el get_oauth_token.php está en /vendor/phpmailer/phpmailer/get_oauth_token.php

¿Cuál debería ser la $redirectUri ? ¿Hay algún path predefinido para acceder al PHPMailer ?

Gracias !

Hola Fernando,

Yo lo que hice una vez en Guaraní Gestión fue crear un nuevo alias en instalacion/toba.conf, luego reinicias Apache:


        #Configuración de Gmail vía XOAUTH2
	Alias /phpmailer "/ruta/a/gestion/vendor/phpmailer/phpmailer"
	<Directory /ruta/a/gestion/vendor/phpmailer/phpmailer>

                DirectoryIndex get_oauth_token.php

		<IfModule !mod_access_compat.c>
		#Apache 2.2.x
		##Piense en actualizar la version del web server a Apache 2.4.x al menos
		##Si desea seguir en esta version, descomente las siguientes lineas
		#	Order allow,deny
		#	Allow from all
		</IfModule>
		<IfModule mod_access_compat.c>
			#Apache 2.3.x/2.4.x  back-comp (deprecated)
			Order allow,deny
			Allow from all
		</IfModule>
		<IfModule mod_authz_core.c>
			#Apache 2.4.x 
			Require all granted
		</IfModule>
	</Directory>

Luego configure el archivo vendor/phpmailer/phpmailer/get_oauth_token.php configuras las variables $clientId y $clientSecret.

Luego debes ingresar como si fuera la URL de Gestión pero cambiando el final por “/phpmailer”, seguís los pasos y debería decirte el “Refresh Token”.

En $redirectUri pone:

$redirectUri = 'http://<URL-SERVIDOR>/phpmailer/get_oauth_token.php';

También en Authorized redirect URIs cuando creas el Client ID.

Referencia: https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2

Documentación: https://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.21.0/envio-email-gmail-xoauth2

Saludos.
2

Gracias Leonel,

Funcionó perfecto…

En el get_oauth_token.php tuve que cambiar dos cosas

  1. línea 61 donde decía ‘vendor/autoload.php’ tuve que poner ‘…/…/autoload.php’

  2. en la línea de $redirectUri, no me funcionó la automática y tuve que usar la 2da manual
    $redirectUri = ‘http://localhost/phpmailer/get_oauth_token.php’;

Como el script no lo corrí desde la misma máquina (no tengo entorno gráfico en localhost), empezó sin problemas, pero al hacer el redirect para darme el token, por supuesto no reconocía el localhost. Lo cambié por la IP (no tenemos el dominio todavía, y Google no me aceptaba poner IP en $redirectUri) y me devolvió el token, que se lo agregué al config.php y funcionó sin problemas.

Supongo que si quiero usar otra cuenta para Preinscripción, tendré que hacer todos los pasos con la otra cuenta…

Yo lo hice para Autogestión en el config.php de g3w3… En Gestión, ¿donde se pone ?

Gracias nuevamente !!!

Hola Fernando, gracias por el aporte!!!

En Autogestión y Preinscripción en instalacion/config.php.

En Gestión, ¿donde se pone ?

En la operación » Administración » Modificar Parámetros del Sistema busca y configura los parámetros cuyo Código comience con email_, hay unos que comienzan con email_xoauth2_.

saludos.
2

Durante la Preinscripción veníamos usando Oauth2 y todo bien… de pronto, a partir de un día, cada vez que tocábamos el botón para mandar el comprobante por mail al nuevo alumno, se quedaba pensando un tiempo (la estrellita girando) entre segundos y hasta 5 / 10 minutos (sí, minutos, cinco o diez, no cinco décimos) hasta que aparecía el cartelito verde de mail de comprobante enviado.
La inscripción la hacía, porque mientras la “estrellita” giraba , en otro navegador ya veíamos al alumno inscripto …

Un día se nos ocurrió volver al oauth común en vez del oauth2 y los tiempos nunca más superaron los 10 segundos…

Entiendo que el oauth2 tiene que ser superador y brindar más seguridad que lo que había antes… pero con esos tiempos era imposible trabajar…
Como era una cuestión de demora simplemente, en los logs no encontramos nada…

¿Hubo algún reporte similar ?

Hola Fernando,

Podes probar en Preinscripción con el perfil Admin en la operación Pruebas => Probar correo, si en el archivo instalacion/config.php configuras ‘smtp_debug’ => SMTP::DEBUG_LOWLEVEL, te va a mostrar información de debug sobre el envío de los emails.

¿si podes pasame la información de debug así la comparo con la mía?

¿Si probas cambiando el puerto a 587 y la seguridad a TLS?


		'smtp' => [
			'from' => 'xxx@gmail.com',
			'from_name' => 'SIU-Preinscripción',
			'host' => 'smtp.gmail.com',
			'seguridad' => mail::TLS,
			'auth' => true,
			'port' => 587,
			'reply_to' => 'xxx@gmail.com',

¿Hubo algún reporte similar ?

Por ahora nadie nos reporto algo similar, lo que si encontré los siguientes posts:

https://support.google.com/mail/thread/25482490/gmail-is-either-taking-a-long-time-to-send-an-email-or-failing-to-send-it-no-prob-with-hotmail?hl=en

El primero dice:

I guess it suggests that GMail is throttling your connection. I did a quick google search and it looks like Google will throttle your connection if you request too much data in a short period.

Quizás tenes mucho volumen de usuarios y estas excediendo la quota de Gmail.

saludos.
4