95 lines
3.9 KiB
Markdown
95 lines
3.9 KiB
Markdown
# 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).
|
|
|
|

|
|

|
|
|
|
## 🚀 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`.
|