Skip to content

yoprogramo/imaphp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IMAP Client - Cliente de Correo Web en PHP

Una aplicación web completa para gestionar correos electrónicos a través de IMAP/SMTP, desarrollada en PHP con una interfaz responsive y moderna.

Características

  • Autenticación IMAP - Login seguro con credenciales de email
  • Navegación por carpetas - Acceso a todas las carpetas del buzón
  • Gestión de carpetas - Crear y eliminar carpetas personalizadas
  • Mover mensajes - Organizar mensajes entre carpetas
  • Lista de mensajes - Vista paginada con información esencial
  • Lectura de mensajes - Visualización completa con metadatos
  • Marcar mensajes - Leído/No leído desde lista y vista individual
  • Eliminación de mensajes - Borrado seguro con confirmación
  • Búsqueda avanzada - Búsqueda simple y avanzada con criterios IMAP múltiples
  • Internacionalización (i18n) - Soporte completo para Español, English y Deutsch
  • Envío SMTP real - Conexión directa al servidor SMTP (no usa mail() de PHP)
  • Responder mensajes - Respuesta rápida con formato automático
  • Soporte TLS/SSL - Conexiones seguras SMTP
  • Diseño responsive - Optimizado para móviles y escritorio
  • Contenedorización Docker - Fácil despliegue y configuración
  • 🧪 Herramienta de prueba SMTP - Validación de configuración independiente

Requisitos

  • Docker y Docker Compose
  • Servidor IMAP/SMTP (Gmail, Outlook, etc.)

Instalación y Configuración

1. Clonar o descargar el proyecto

cd /ruta/a/tu/proyecto

2. Configurar variables de entorno

Edita el archivo .env con la configuración de tu servidor de correo:

# Configuración del servidor IMAP
IMAP_SERVER=imap.gmail.com
IMAP_PORT=993
IMAP_SSL=true

# Configuración del servidor SMTP
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=tls

# Configuración de la aplicación
APP_NAME=Mi Cliente IMAP
SESSION_SECRET=tu_clave_secreta_muy_segura_aqui

Configuraciones comunes:

Gmail:

IMAP_SERVER=imap.gmail.com
IMAP_PORT=993
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587

Outlook/Hotmail:

IMAP_SERVER=outlook.office365.com
IMAP_PORT=993
SMTP_SERVER=smtp.live.com
SMTP_PORT=587

Yahoo:

IMAP_SERVER=imap.mail.yahoo.com
IMAP_PORT=993
SMTP_SERVER=smtp.mail.yahoo.com
SMTP_PORT=587

3. Ejecutar con Docker

# Construir y ejecutar
docker-compose up -d

# Ver logs
docker-compose logs -f

# Parar el servicio
docker-compose down

4. Acceder a la aplicación

Abre tu navegador en: http://localhost:8080

5. Probar configuración SMTP (Opcional)

Antes de usar la aplicación completa, puedes probar la configuración SMTP:

# Acceder a la herramienta de prueba
http://localhost:8080/test-smtp.php

Esta herramienta te permitirá:

  • ✅ Validar la conexión al servidor SMTP
  • 🔧 Diagnosticar problemas de configuración
  • 📧 Enviar un email de prueba
  • 💡 Obtener sugerencias de solución en caso de errores

Uso

1. Inicio de Sesión

  • Ingresa tu email completo (ejemplo: [email protected])
  • Introduce tu contraseña de email
  • Para Gmail, puede necesitar una "contraseña de aplicación"

2. Navegación

  • Sidebar izquierdo: Lista de carpetas disponibles
  • Área principal: Lista de mensajes de la carpeta seleccionada
  • Botón "Redactar": Crear nuevo mensaje
  • Botón "Gestionar Carpetas": Administrar carpetas del buzón

3. Gestión de Mensajes

  • Clic en asunto: Ver mensaje completo
  • Botón "Ver": Abrir mensaje
  • Selector "Mover a...": Mover mensaje a otra carpeta
  • Botones de estado: Marcar como leído/no leído
  • Botón "Eliminar": Borrar mensaje (con confirmación)
  • Botón "Responder": Responder al remitente

4. Gestión de Carpetas

  • Crear carpetas: Nuevas carpetas personalizadas
  • Ver estadísticas: Mensajes totales, no leídos, recientes
  • Eliminar carpetas: Solo carpetas personalizadas (no del sistema)
  • Navegación rápida: Acceso directo a cualquier carpeta

5. Búsqueda de Mensajes

  • Acceso: Botón "Buscar" en la navegación principal
  • Búsqueda Simple: Búsqueda rápida por texto en todo el mensaje
  • Búsqueda Avanzada: Criterios múltiples con opciones:
    • Por contenido (texto, asunto, remitente, destinatario, cuerpo)
    • Por estado (leído/no leído)
    • Por fecha (desde/hasta fechas específicas)
    • Por tamaño (mayor/menor que tamaño especificado)
  • Resultados paginados: Vista organizada con información detallada
  • Sugerencias dinámicas: Consejos contextuales según criterios seleccionados

6. Configuración de Idioma

  • Cambio desde login: Selector de idioma en página de inicio
  • Cambio desde perfil: Configuración permanente en preferencias de usuario
  • Idiomas disponibles: Español, English, Deutsch
  • Persistencia: El idioma se guarda automáticamente
  • Interfaz completa: Toda la aplicación traducida incluyendo mensajes de error

7. Envío de Correos

  • Completa los campos: Para, Asunto, Mensaje
  • El mensaje se envía en formato texto plano
  • Confirmación visual del envío exitoso

Configuración para Gmail

Si usas Gmail, necesitarás:

  1. Habilitar IMAP en la configuración de Gmail
  2. Crear una contraseña de aplicación:
    • Ve a Configuración de cuenta de Google
    • Seguridad → Verificación en 2 pasos
    • Contraseñas de aplicaciones
    • Genera una nueva contraseña
    • Usa esta contraseña en lugar de tu contraseña normal

Estructura del Proyecto

imaphp/
├── 🎨 assets/
│   └── style.css          # Estilos CSS responsivos
├── 🔧 classes/
│   ├── ImapClient.php     # Cliente IMAP con funciones de búsqueda
│   ├── SmtpClient.php     # Cliente SMTP real (no usa mail())
│   ├── I18n.php           # Sistema de internacionalización
│   └── UserProfile.php    # Gestión de perfiles y preferencias
├── ⚙️ config/
│   └── config.php         # Configuración y carga de .env
├── 🌍 lang/
│   ├── es.php             # Traducciones en español
│   ├── en.php             # Traducciones en inglés
│   └── de.php             # Traducciones en alemán
├── .env                   # Variables de entorno
├── docker-compose.yml     # Configuración Docker Compose
├── Dockerfile            # Imagen Docker con PHP y IMAP
├── 🏠 index.php           # Página de login con selector de idioma
├── 📮 mailbox.php         # Lista de mensajes
├── 📄 message.php         # Vista de mensaje individual
├── ✏️ compose.php         # Redactar/responder mensajes
├── 🔍 search.php          # Búsqueda simple y avanzada de mensajes
├── 📁 folders.php         # Gestión de carpetas
├── � profile.php         # Configuración de perfil y preferencias
├── �🚪 logout.php          # Cerrar sesión
├── 🧪 test-smtp.php       # Herramienta de prueba SMTP
├── 🌍 test-i18n-demo.php  # Demo del sistema de internacionalización
└── 📚 README.md           # Este archivo

Características Técnicas

Backend

  • PHP 8.2 con extensión IMAP
  • Cliente SMTP nativo - Conexión directa sin mail() de PHP
  • Búsqueda IMAP nativa - Uso de imap_search con criterios múltiples
  • Sistema de internacionalización - Soporte completo i18n con placeholders
  • Gestión de perfiles de usuario - Preferencias personalizadas persistentes
  • Soporte TLS/SSL para conexiones seguras
  • Sesiones PHP para autenticación
  • Clases orientadas a objetos para IMAP/SMTP/I18n
  • Manejo de errores robusto con logging
  • Paginación de mensajes y resultados de búsqueda

Frontend

  • Interfaz multiidioma - Español, English, Deutsch
  • Búsqueda dual mode - Simple y avanzada con sugerencias dinámicas
  • CSS Grid y Flexbox para layouts
  • Diseño responsive con media queries
  • Componentes modulares (botones, formularios, alertas)
  • Paleta de colores moderna con gradientes
  • Tipografía optimizada para legibilidad

Seguridad

  • Validación de entrada en formularios
  • Escape de HTML para prevenir XSS
  • Sanitización de criterios de búsqueda IMAP
  • Autenticación por sesión
  • Validación de emails
  • Confirmación de eliminación

Personalización

Cambiar colores

Edita las variables CSS en assets/style.css:

/* Colores principales */
:root {
  --primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  --success-color: #51cf66;
  --danger-color: #ff6b6b;
}

Configurar paginación

En mailbox.php, línea con getMessages():

$result = $imapClient->getMessages($currentFolder, $page, 50); // 50 mensajes por página

Cambiar nombre de la aplicación

En el archivo .env:

APP_NAME=Mi Cliente de Correo Personalizado

Solución de Problemas

Error de conexión IMAP

  • Verifica las credenciales de email
  • Confirma que IMAP esté habilitado en tu proveedor
  • Para Gmail, usa contraseña de aplicación

Error de envío SMTP

  • Usa la herramienta de prueba: http://localhost:8080/test-smtp.php
  • Verifica la configuración SMTP en .env
  • Para Gmail, asegúrate de usar contraseña de aplicación
  • Verifica que el puerto SMTP (587/465) no esté bloqueado
  • Revisa los logs: docker-compose logs

Errores comunes SMTP

  • "Connection refused": Puerto bloqueado o servidor incorrecto
  • "Authentication failed": Credenciales incorrectas
  • "TLS handshake failed": Problema con certificados SSL
  • "Relay denied": El servidor SMTP no permite relay desde tu IP

Problemas de permisos

# Reiniciar contenedor
docker-compose restart

# Reconstruir imagen
docker-compose build --no-cache

Puerto ocupado

Si el puerto 8080 está en uso:

# En docker-compose.yml
ports:
  - "8081:80"  # Cambiar puerto

Limitaciones Actuales

  • Sin cifrado local: Las credenciales se almacenan en sesión PHP
  • Dependiente de IMAP: Requiere servidor compatible
  • Sin notificaciones: No hay alertas de nuevos mensajes

Mejoras Futuras

  • Filtros y etiquetas avanzadas
  • Notificaciones push de nuevos mensajes
  • Soporte para múltiples cuentas de correo
  • Cifrado local de credenciales
  • API REST para integración externa
  • Progressive Web App (PWA)
  • Backup automático de configuraciones
  • Calendario integrado con invitaciones por email

Licencia

Proyecto de código abierto con licencia Apache 2.0

Soporte

Para problemas o mejoras, revisa la documentación de:

About

Simple Imap client with no dependencies

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages