Error al enviar correo v2.9.5

Buenos días,
Al intentar enviar correo desde el servidor Guarani 3W v2.9.5 da el sigueinte error:

./guarani enviar_emails
Inicio del proceso de encolado de emails enviados desde Guarani Gestion...
Encolando los emails de la Unidad de Gestion: '15348'...
PHP Notice:  Undefined variable: pdo in /usr/local/proyectos/3w/2.9.5/src/siu/util/consola/comandos/enviar_emails.php on line 123
PHP Fatal error:  Call to a member function rollBack() on a non-object in /usr/local/proyectos/3w/2.9.5/src/siu/util/consola/comandos/enviar_emails.php on line 123

Aguardo comentarios, gracias!

Hola Claudio, proba lo siguiente:

En el archivo src/siu/util/consola/comandos/enviar_emails.php, dentro de la función execute saca estas lineas del try:


$bloque_acceso = $acceso['database'];
$pdo = new \PDO(********);

que quede algo como sigue:



................................

        //Por cada bloque de acceso (conexión a la DB)
        foreach($accesos as $key => $acceso){

			$this->bootstrap_kernel($key);

			$output->writeln("<comment>Encolando los emails de la Unidad de Gestión: '{$acceso['ua']}'...</comment>");

			$bloque_acceso = $acceso['database'];
                        $pdo = new \PDO(********);
				
			try{

................................

Por favor, avísanos si con eso funciona así lo incorporamos en la próxima versión!!!

saludos.

Ahi lo modifique y me da otra cosa:

./guarani enviar_emails
Inicio del proceso de encolado de emails enviados desde Guaran▒ Gesti▒n…
Encolando los emails de la Unidad de Gesti▒n: ‘15348’…

[PDOException]
SQLSTATE=HY000, SQLDriverConnect: -23197 [Informix][Informix ODBC Driver][Informix]Database locale information mismatch.

enviar_emails

Hola Claudio,

Revisa en el archivo instalacion/config.php la directiva client_locale en los parámetros de conexión a la DB.

saludos.

Hola , El client locale está correcto, de hecho la conexión para el 3W se realiza sin problemas hacia el informix…

Lo que veo es que la llamada que hacen del archivo enviar_emails.php utiliza el parametro client_locale tanto para db_locale como para client_locale…

 $pdo = new \PDO("informix:host={$bloque_acceso['host']}; service={$bloque_acceso['service']}; database={$bloque_acceso['database']}; server={$bloque_acceso['server']}; protocol={$bloque_acceso['protocol']}; EnableScrollableCursors={$bloque_acceso['EnableScrollableCursors']}; db_locale={$bloque_acceso['client_locale']}; client_locale={$bloque_acceso['client_locale']}", $bloque_acceso['LogonID'], $bloque_acceso['pwd']);

Eso puede estar generando el problema

Hola Claudio,

¿Que pasa si le quitas db_locale?

¿Ustedes que driver usan para conectarse a la DB?. Lo pueden ver en instalacion/config.php, donde dice vendor en la conexión a la DB.

Me da la sensación que están utilizando odbc, ya que el mensaje de error dice “[Informix ODBC Driver]”.

saludos.

Ahi lo elimine a ese parametro…creeria que funciono:
Salieron un millon de lineas como estas…

Encolando los emails de la Unidad de Gesti▒n: ‘14347’…
Se encolaron 0 emails para la Unidad de Gesti▒n: ‘14347’…
Inicio del proceso de env▒o de emails encolados para la Unidad de Gesti▒n: ‘14347’…
[2019-03-27T10:41:24-03:00] [JOB] Starting worker host::g3w2-nodo2 pid::9047 on queue::email
[2019-03-27T10:41:24-03:00] [JOB] attempting to acquire lock for job::2498 on host::g3w2-nodo2 pid::9047
PHP Notice: Undefined index: reply_to in /usr/local/proyectos/3w/2.9.5/src/siu/lib/kernel/util/mail.php on line 49
[2019-03-27T10:41:28-03:00] [JOB] completed job::2498
[2019-03-27T10:41:30-03:00] [JOB] attempting to acquire lock for job::2500 on host::g3w2-nodo2 pid::9047
PHP Notice: Undefined index: reply_to in /usr/local/proyectos/3w/2.9.5/src/siu/lib/kernel/util/mail.php on line 49
[2019-03-27T10:41:32-03:00] [JOB] completed job::2500

Hola Claudio,

Si, supuestamente salieron los emails!!!

El notice que muestra se debe a que no tenes configurado el reply_to dentro de las configuraciones de smtp del archivo instalacion/config.php.

Ya incorporamos los cambios para que salgar corregidos en la próxima versión!!!

saludos.

Hola, si tenemos definido el reply_to dentro del config.php

Que otra cosa podemos revisar?

El failure es por el reply_to tambien?

PHP Notice:  Undefined index: reply_to in /usr/local/proyectos/3w/2.9.5/src/siu/lib/kernel/util/mail.php on line 49
[2019-03-28T10:06:30-03:00] [JOB] failure in job::2502

Ahi vimos en la tabla que los failure son aparentemente porque está mal el Recipient osea la dirección de correo-
Ahora la tabla no se limpia? Porque va a seguir intentando a enviar a las direcciones que esten mal?

Hola Claudio,

El funcionamiento es como sigue:

Al momento que se envía el email, el mismo se encola en la tabla jobs de la base de datos. Cuando esto ocurre, se encola un objeto de la clase MailJob (src/siu/lib/kernel/util/MailJob.php), y se toma la configuración de SMTP de ese momento.

Si luego modificas la configuración de SMTP, igualmente el email encolado se envía con la configuración previa (porque ya el objeto se serializa con los parámetros de SMTP).

Si quieren modificar alguna propiedad del objeto encolado, lo pueden hacer de forma provisoria en la función perform del archivo src/siu/lib/kernel/util/MailJob.php, ej:


    public function perform() {
		$this->set_reply('ejemplo@gmail.com');
		$this->enviar();
    }

Tener en cuenta que $this es un objeto de la clase src/siu/lib/kernel/util/mail.php.

saludos.

¿Porque va a seguir intentando a enviar a las direcciones que estén mal?

Si mal no recuerdo, lo que hace la librería DJJob es borrar las tareas que se ejecutan bien. Las que fallan las reintenta ejecutar un par de veces hasta que las bloquea y no las vuelve a ejecutar mas (no las borra, debe ser para que queden en la tabla y se revisen).

saludos.