From f279d7d1d3336b62d6525fb0755f9b95dbda705a Mon Sep 17 00:00:00 2001 From: Jordan Diaz Date: Thu, 3 Sep 2026 20:14:38 +0000 Subject: [PATCH] fix(correo): un solo camino de envio, el directo, y fuera el proxy El commit anterior dejaba el envio condicionado al entorno (proxy en local, directo en produccion) para poder unificar el fichero entre los dos canales sin cambiarle el comportamiento a nadie. Decision posterior: el proxy no hace falta, asi que se adopta la version de core_client tal cual y se envia SIEMPRE directo. Se van dos funciones con el, y ninguna deja huerfanos: send_email_coco_proxy() POST a cocosolution.com/?sendQuantumEmail=1 encrypt() solo la usaba el proxy, y en una linea que ya estaba comentada dentro de esa misma funcion Comprobado antes de quitarlas: cero llamadas fuera de la clase en web-base, en las 131 webs de Forge, en el CMS central y en core_client. Con esto core_client y web-base quedan identicos: 0 ficheros de deriva fuera de plugins/, que actualizacion.php se salta a proposito. OJO al alcance: las webs de Forge pasan de enviar por el proxy a enviar directo. Es el cambio que se buscaba, pero conviene confirmarlo con un envio real desde una web local antes de darlo por bueno. Co-Authored-By: Claude Opus 5 (1M context) --- cms/lib/classes/CocoEmail.php | 76 +---------------------------------- 1 file changed, 1 insertion(+), 75 deletions(-) diff --git a/cms/lib/classes/CocoEmail.php b/cms/lib/classes/CocoEmail.php index a11f8f2..0b0a300 100755 --- a/cms/lib/classes/CocoEmail.php +++ b/cms/lib/classes/CocoEmail.php @@ -163,38 +163,10 @@ class CocoEmail { if (!$subject && $record) $subject = t($record, self::$field_subject); - // El correo sale por dos caminos segun el entorno, y esta era la unica - // divergencia real entre el core de Forge y el de las webs legacy: - // web-base mandaba SIEMPRE por el proxy y core_client SIEMPRE directo, - // asi que el fichero no se podia unificar sin cambiarle el - // comportamiento a media plataforma. Con la condicion delante, el mismo - // fichero vale para los dos canales. - // - // En local/test hace falta el proxy: el envio directo no sale de ahi. - // En produccion se mantiene el directo, que es lo que han hecho siempre - // esas webs. - // - // Mismo criterio de deteccion que header.php:81 — un `.acai` en la raiz - // de la web marca entorno local. Se comprueba en linea a proposito, sin - // depender de que otro fichero haya definido nada (ver el commit - // f81c5a2 de web-base, "el entorno se detecta en linea"). - // Desde cms/lib/classes/ la raiz esta tres niveles arriba. - $esEntornoLocal = is_file(dirname(__FILE__) . '/../../../.acai'); - - // Se devuelve array en los dos caminos. El directo no devolvia nada - // (core_client) y el del proxy si (web-base): unificar hacia el array es - // aditivo — quien ignoraba el retorno lo sigue ignorando. - $result = []; foreach ($to as $destinatario) { - if ($esEntornoLocal) { - $resultString = self::send_email_coco_proxy($destinatario, $subject, $content); - $result[] = @json_decode($resultString,true) ?: ["success" => false, "message" => "Error decoding response", "raw_response" => $resultString]; - } else { - $result[] = self::send_email($destinatario, $subject, $content); - } + self::send_email($destinatario, $subject, $content); } self::$attach_files = []; - return $result; } /* options : [ @@ -282,52 +254,6 @@ class CocoEmail { }, array_change_key_case($arr)); } - function encrypt($string, $key) { - $result = ''; - for($i=0; $i self::$smtp_data, - "mail_data" => self::$mail_data, - "replyTo" => self::$replyTo, - "send_copy_to" => self::$send_copy_to, - "params" => [ - "to" => $destinatario, - "subject" => $asunto, - "body" => $contenido - ], - "bloqued_emails" => self::$bloqued_emails, - "encode_with_base64" => self::$encode_with_base64, - "template" => self::$template, - "styles" => self::$styles, - "header" => self::$header, - "footer" => self::$footer - ]; - - //$encryptData = self::encrypt(json_encode($data), "Analiticaempresas17"); - - $opts = array('http' => - array( - 'method' => 'POST', - 'header' => 'Content-Type: application/json', - 'content' => json_encode($data) - ) - ); - - $context = stream_context_create($opts); - $result = file_get_contents("https://cocosolution.com/?sendQuantumEmail=1", false, $context); - return $result; - } - static function send_email($destinatario="soporte@cocosolution.com", $asunto="Error al enviar correo", $contenido="", $respuesta="") { global $configuracionRecord;