diff --git a/cms/lib/classes/CocoEmail.php b/cms/lib/classes/CocoEmail.php index 0b0a300..a11f8f2 100755 --- a/cms/lib/classes/CocoEmail.php +++ b/cms/lib/classes/CocoEmail.php @@ -163,10 +163,38 @@ 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) { - self::send_email($destinatario, $subject, $content); + 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::$attach_files = []; + return $result; } /* options : [ @@ -254,6 +282,52 @@ 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;