El sistema ahora soporta múltiples configuraciones de servidores de correo, permitiendo a los usuarios conectarse a diferentes proveedores (Gmail, Outlook, Yahoo, etc.) o servidores personalizados desde la pantalla de login.
config/servers.json
{
"default_server": "default",
"servers": {
"server_id": {
"name": "Nombre del Servidor",
"description": "Descripción opcional",
"imap": {
"server": "imap.ejemplo.com",
"port": 993,
"ssl": true
},
"smtp": {
"server": "smtp.ejemplo.com",
"port": 587,
"secure": "tls"
}
}
}
}- Usa valores de variables de entorno
- Configuración por defecto del sistema
- IMAP: imap.gmail.com:993 (SSL)
- SMTP: smtp.gmail.com:587 (TLS)
- IMAP: outlook.office365.com:993 (SSL)
- SMTP: smtp-mail.outlook.com:587 (TLS)
- IMAP: imap.mail.yahoo.com:993 (SSL)
- SMTP: smtp.mail.yahoo.com:587 (TLS)
- Plantilla para configuraciones personalizadas
- Seleccionar Servidor: En la pantalla de login, elegir el servidor apropiado
- Información Automática: El sistema muestra la configuración del servidor seleccionado
- Login Normal: Introducir email y contraseña como siempre
- Editar servers.json: Añadir/modificar configuraciones de servidores
- Variables de Entorno: El servidor "default" siempre usa las variables de .env
- Sin Reinicio: Los cambios en servers.json se aplican inmediatamente
// Obtener lista de servidores
Config::getServers()
// Obtener servidor por defecto
Config::getDefaultServer()
// Establecer servidor actual
Config::setCurrentServer($serverId)
// Obtener configuración completa del servidor
Config::getServerConfig($serverId)
// Obtener configuración IMAP específica
Config::getImapConfig($serverId)
// Obtener configuración SMTP específica
Config::getSmtpConfig($serverId)// Estos métodos usan el servidor actual de la sesión
Config::getImapServer()
Config::getImapPort()
Config::getImapSsl()
Config::getSmtpServer()
Config::getSmtpPort()
Config::getSmtpSecure()// Constructor actualizado con parámetro opcional de servidor
new ImapClient($username, $password, $serverId = null)// Constructor actualizado con parámetro opcional de servidor
new SmtpClient($username, $password, $serverId = null)$_SESSION['current_server']: ID del servidor seleccionado
- La selección del servidor se mantiene durante toda la sesión
- Al hacer logout, se limpia la configuración del servidor
- Selector de Servidor: Dropdown con todos los servidores disponibles
- Información Dinámica: Muestra servidor:puerto del servidor seleccionado
- Detección Automática: Pre-selecciona el servidor por defecto
- Validación: El campo servidor es requerido
- Editar
config/servers.json - Añadir nueva entrada en la sección "servers"
- Definir configuraciones IMAP y SMTP
- El servidor aparecerá automáticamente en el login
"mi_empresa": {
"name": "Mi Empresa",
"description": "Servidor corporativo",
"imap": {
"server": "mail.miempresa.com",
"port": 993,
"ssl": true
},
"smtp": {
"server": "mail.miempresa.com",
"port": 587,
"secure": "tls"
}
}- ✅ Variables de entorno: Siguen funcionando para el servidor "default"
- ✅ Código existente: Los constructores sin serverId usan el servidor actual
- ✅ Configuración anterior: El sistema funciona sin servers.json usando solo .env
- Flexibilidad: Soporte para múltiples proveedores sin reconfiguración
- Facilidad de uso: Los usuarios solo seleccionan su proveedor
- Mantenimiento: Configuraciones centralizadas y editables
- Escalabilidad: Fácil añadir nuevos servidores
- Compatibilidad: No rompe instalaciones existentes