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) <noreply@anthropic.com>
This commit is contained in:
Jordan Diaz
2026-09-03 20:14:38 +00:00
co-authored by Claude Opus 5
parent ec203bc1e6
commit f279d7d1d3
+1 -75
View File
@@ -163,38 +163,10 @@ class CocoEmail {
if (!$subject && $record) $subject = t($record, self::$field_subject); 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) { foreach ($to as $destinatario) {
if ($esEntornoLocal) { self::send_email($destinatario, $subject, $content);
$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::$attach_files = []; self::$attach_files = [];
return $result;
} }
/* /*
options : [ options : [
@@ -282,52 +254,6 @@ class CocoEmail {
}, array_change_key_case($arr)); }, array_change_key_case($arr));
} }
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
static function send_email_coco_proxy($destinatario="soporte@cocosolution.com", $asunto="Error al enviar correo", $contenido="", $respuesta="") {
$data = [
"smtp_data" => 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="") { static function send_email($destinatario="soporte@cocosolution.com", $asunto="Error al enviar correo", $contenido="", $respuesta="") {
global $configuracionRecord; global $configuracionRecord;