# Cliente de Correo Electrónico (Python + Tkinter) **VIDEO FUNCIONALIDAD** https://youtu.be/OMbzm-YJ1Zg **VIDEO EXPLICATIVO CÓDIGO** https://youtu.be/KUiz4sP8UDw Este proyecto implementa un cliente de correo electrónico completo con interfaz gráfica (GUI) desarrollado en **Python** utilizando **Tkinter**. La aplicación soporta los tres protocolos fundamentales de correo electrónico: **SMTP** (envío), **IMAP** (gestión remota) y **POP3** (descarga local). ![Python](https://img.shields.io/badge/Python-3.11%2B-blue) ![Tkinter](https://img.shields.io/badge/GUI-Tkinter-green) ## 🚀 Características Principales * **Interfaz Gráfica Intuitiva**: Diseño basado en pestañas para separar funcionalidades (Login, Enviar, Bandeja, Descargas). * **Soporte Multi-Protocolo**: * **SMTP (Puerto 25)**: Envío de correos electrónicos con soporte para múltiples destinatarios. * **IMAP (Puerto 143)**: Visualización y gestión de la bandeja de entrada en tiempo real. * **POP3 (Puerto 110)**: Descarga de mensajes desde el servidor al cliente local. * **Gestión de Adjuntos**: * Envío de archivos adjuntos de cualquier tipo. * Visualización y descarga de adjuntos recibidos. * **Previsualización integrada** para imágenes y archivos de texto sin necesidad de guardarlos. * Menú contextual (clic derecho) para guardar adjuntos individuales o en lote. * **Lectura de Correos**: Decodificación automática de cabeceras y cuerpos de mensaje (HTML/Texto plano). ## 📋 Requisitos Previos * **Python 3.11 o superior** (Recomendado 3.12). * Librerías estándar de Python (incluidas por defecto): * `tkinter` (Interfaz gráfica) * `smtplib`, `imaplib`, `poplib` (Protocolos de red) * `email` (Manejo de formato MIME) * Librería externa para imágenes: * `Pillow` (PIL) ### Instalación de dependencias ```bash pip install pillow ``` ## 🔧 Instalación y Ejecución ### 1. Clonar o descargar el proyecto Asegúrate de tener todos los archivos en una misma carpeta: * `cliente_correo.py` * `ejecutar.sh` * `INSTALACION.md` ### 2. Configuración del Servidor Por defecto, el cliente está configurado para un servidor local. Puedes modificar la IP en el archivo `cliente_correo.py` o ingresarla en la interfaz de login. * IP por defecto: `10.10.0.101` * Credenciales predefinidas: `levi@psp.es` / `1234` ### 3. Ejecutar la aplicación **En macOS / Linux (Recomendado):** Utiliza el script incluido que busca automáticamente la versión correcta de Python: ```bash chmod +x ejecutar.sh ./ejecutar.sh ``` **Método estándar (Cualquier SO):** ```bash python3 cliente_correo.py ``` > **Nota para usuarios de macOS**: Si encuentras problemas con la versión de Tkinter, consulta el archivo [INSTALACION.md](INSTALACION.md) para una guía detallada de solución. ## 📂 Estructura del Proyecto ``` . ├── cliente_correo.py # Código fuente principal de la aplicación ├── ejecutar.sh # Script lanzador para macOS/Linux (verifica versión Python) ├── INSTALACION.md # Guía específica para solucionar errores de entorno en Mac └── README.md # Este archivo ``` ## ⚙️ Funcionamiento Interno El cliente utiliza las siguientes librerías para la comunicación de red: 1. **`smtplib`**: Se conecta al puerto 25 para enviar mensajes construidos con `MIMEMultipart`. 2. **`imaplib`**: Se conecta al puerto 143, permite listar correos (`search`), obtener cabeceras (`fetch`) y leer contenido bajo demanda. 3. **`poplib`**: Se conecta al puerto 110, permitiendo obtener el número total de mensajes y descargarlos secuencialmente. ## 🛠️ Solución de Problemas Comunes * **Error de conexión**: Verifica que la IP del servidor sea alcanzable y que los servicios de correo (Postfix/Dovecot/Mercury) estén corriendo en los puertos estándar (25, 110, 143). * **Error de Tkinter en Mac**: Ejecuta `./ejecutar.sh` o revisa `INSTALACION.md`.