Revert "fix(correo): un solo camino de envio, el directo, y fuera el proxy"
El proxy no era prescindible: el container de las webs de Forge NO tiene MTA. `which sendmail mail postfix ssmtp msmtp exim4` no devuelve nada y `sendmail_path` apunta a /usr/sbin/sendmail, que no existe. Con $smtp = false PHPMailer cae a mail() de PHP y ahi no sale nada, en silencio. Medido sobre las webs de Forge: 26 configuran CocoEmail::$smtp = true propio -> enviarian igual 57 NO configuran SMTP -> se quedaban SIN correo Entre esas 57 esta cdn-ecommerce, que es justo la web de pruebas. Se vuelve a la version condicional: proxy cuando hay .acai (Forge/test) y directo cuando no (legacy de produccion). Cubre los tres casos, porque el proxy reenvia con el smtp_data que le llega en el payload, asi que las 26 con SMTP propio siguen saliendo por su servidor. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f279d7d1d3
commit
3615d85bc0
@@ -163,10 +163,38 @@ 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) {
|
||||||
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 = [];
|
self::$attach_files = [];
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
options : [
|
options : [
|
||||||
@@ -254,6 +282,52 @@ 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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user