e4ab0567df8ba99ed65d7a3760e1ab857b1ee32b
Dos cambios que van juntos porque atacan el mismo fallo: en las webs de Forge no
salia ni un correo.
1. LOS CAMPOS DEL PANEL AHORA SIRVEN PARA ALGO
La tabla `configuracion` lleva desde siempre email_smtp, email_host,
email_port, email_secure, email_username, email_password, email_from y
email_from_name... y no los leia NADIE. Aparecian solo en el schema: el panel
te dejaba rellenarlos, se guardaban en la BD, y el envio seguia usando los
defaults de la clase —con la contrasena VACIA— o lo que hubiera a mano en
lib/variables.php. Un formulario decorativo.
`cargarSmtpDeConfiguracion()` los vuelca sobre la clase cuando el check
email_smtp esta marcado y email_host tiene valor. Se llama desde send() antes
de enviar, no solo desde send_email().
El schema de `configuracion` es PER-WEB y no todas tienen esas columnas
(villagrancanaria no las tiene): se lee con @ sobre el array, asi que una web
sin ellas se comporta exactamente igual que antes.
2. FUERA EL PROXY
send_email_coco_proxy() mandaba a cocosolution.com/?sendQuantumEmail=1. Se
quita por dos motivos medidos hoy:
- Ese endpoint RECHAZA TODO. Probados seis formatos (JSON crudo,
form-urlencoded, anidado, y el payload cifrado por tres vias) y siempre
contesta {"error":1,"message":"Need SMTP data and Params"}, incluso con
smtp_data completo. Es decir: ninguna web de Forge ha podido enviar por
ahi, y eso es anterior a los cambios de hoy.
- No hace falta. El container alcanza los SMTP por su cuenta: verificado
contra smtp.gmail.com:465 y :587 y smtp.ionos.es:465, con banner 220.
PHPMailer conecta solo cuando $smtp = true.
Se va con el encrypt(), que solo usaba el proxy y en una linea que ya estaba
comentada dentro de esa misma funcion. Cero llamadas a ambas fuera de la
clase, comprobado en los cuatro arboles.
Verificado en cdn-ecommerce: con el check marcado, la traza pasa de
"smtp=no host=smtp.gmail.com pass=VACIA" a "smtp=si host=<el del panel>", y
PHPMailer intenta la conexion. Falta solo poner credenciales de verdad.
OJO, queda pendiente: send_email() devuelve NULL siempre, tanto si entrega como
si no. Un fallo de envio es hoy indistinguible de un exito.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
acai-vscode-webbase
Plantilla base PHP para webs locales de desarrollo con Acai CMS.
Descripcion
Este repositorio contiene la estructura base que se usa al crear nuevas webs locales. Incluye los archivos PHP necesarios, configuracion de Apache, y la estructura de directorios del CMS.
Estructura
.
├── index.php # Punto de entrada
├── header.php # Encabezado
├── footer.php # Pie de pagina
├── funciones.php # Funciones globales
├── slug.php # Gestion de URLs
├── sesion.php # Gestion de sesiones
├── apartados.php # Gestion de apartados
├── captcha.php # Verificacion CAPTCHA
├── .htaccess # Config Apache
├── .user.ini # Config PHP
├── .docker/ # Config Docker (Dockerfile, etc.)
├── cms/ # Core del CMS
│ ├── lib/ # Clases, handlers, plugins
│ ├── data/ # Schemas y cache
│ └── uploads/ # Archivos subidos
├── hooks/ # Hooks PHP del proyecto
├── template/ # Plantillas y modulos
└── cgi-bin/ # Scripts CGI
Relacion con el servidor
El servidor (acai-vscode-server) referencia este directorio como WEB_BASE_DIR para copiar la estructura base al crear nuevas webs locales. Se configura en ~/.docker-web-gui/config.json como web_base_dir.
Languages
PHP
91.4%
JavaScript
5.8%
Go Template
2%
SCSS
0.7%