new readme

This commit is contained in:
Levi Planelles 2026-03-02 19:38:43 +01:00
parent 5719219f58
commit 6acb5ab84a
1 changed files with 63 additions and 138 deletions

201
README.md
View File

@ -1,163 +1,88 @@
# Cliente de Correo Electrónico
# Cliente de Correo Electrónico (Python + Tkinter)
Cliente de correo electrónico con interfaz gráfica desarrollado en Python con soporte para SMTP, IMAP y POP3.
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
![Python](https://img.shields.io/badge/Python-3.11%2B-blue)
![Tkinter](https://img.shields.io/badge/GUI-Tkinter-green)
- **Envío de correos** mediante SMTP (puerto 25)
- **Enviar archivos adjuntos** de cualquier tipo
- Múltiples archivos adjuntos por correo
- **Consulta de correos** mediante IMAP (puerto 143)
- **Descarga de correos** mediante POP3 (puerto 110)
- **Inicio de sesión automático** con credenciales predefinidas (levi@psp.es)
- **Soporte completo para archivos adjuntos**:
- Visualizar lista de adjuntos en correos recibidos
- **Previsualizar adjuntos** (imágenes y archivos de texto)
- Guardar adjuntos individuales o todos a la vez
- Interfaz gráfica intuitiva con Tkinter
- Soporte para múltiples codificaciones de caracteres
- Decodificación automática de encabezados
## 🚀 Características Principales
## Requisitos
* **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).
- Python 3.12 o superior (recomendado)
- Bibliotecas de Python:
- tkinter (incluido con Python)
- Pillow (para previsualización de imágenes)
- smtplib, imaplib, poplib, email (incluidos)
## 📋 Requisitos Previos
## Configuración del Servidor
El cliente está configurado por defecto para conectarse a:
- **IP del servidor**: 10.10.0.101
- **Puerto SMTP**: 25
- **Puerto IMAP**: 143
- **Puerto POP3**: 110
- **Web**: https://10.10.0.101:20000
## Instalación
1. Clona o descarga este repositorio
2. No se requieren dependencias adicionales
## Uso
### Ejecución
* **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
python cliente_correo.py
pip install pillow
```
O en sistemas Unix/Linux:
## 🔧 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
```
### Inicio de Sesión
> **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.
El cliente inicia sesión automáticamente con las credenciales predefinidas:
- **Usuario**: levi@psp.es
- **Contraseña**: 1234
Si necesitas usar otras credenciales, puedes modificarlas en la pestaña "Iniciar Sesión" y hacer clic en "Conectar".
### Enviar Correos (SMTP)
1. Ve a la pestaña "Enviar Correo"
2. Completa los campos:
- **Para**: Dirección de correo del destinatario
- **Asunto**: Asunto del correo
3. **(Opcional) Adjuntar archivos**:
- Haz clic en "Agregar Archivo" en la sección "Adjuntar Archivos"
- Selecciona uno o varios archivos
- Los archivos aparecerán en la lista
- Puedes quitar archivos seleccionándolos y haciendo clic en "Quitar Seleccionado"
4. Escribe tu mensaje en el campo "Mensaje"
5. Haz clic en "Enviar Correo"
### Consultar Correos (IMAP)
1. Ve a la pestaña "Bandeja de Entrada (IMAP)"
2. Haz clic en "Actualizar" para cargar los correos
3. Selecciona un correo de la lista
4. Haz clic en "Leer Seleccionado" para ver su contenido
#### Trabajar con Adjuntos Recibidos
Si el correo tiene archivos adjuntos:
1. Los adjuntos aparecerán listados en la sección "Archivos Adjuntos"
2. Para **previsualizar** un adjunto:
- Selecciona el adjunto de la lista
- Haz clic en "Previsualizar"
- Se abrirá una ventana mostrando el contenido (funciona con imágenes y archivos de texto)
3. Para **guardar** un adjunto:
- Selecciona el adjunto de la lista
- Haz clic en "Guardar Adjunto"
- Elige la ubicación donde guardarlo
3. Para guardar todos los adjuntos:
- Haz clic en "Guardar Todos"
- Selecciona la carpeta de destino
### Descargar Correos (POP3)
1. Ve a la pestaña "Descargar Correos (POP3)"
2. Haz clic en "Listar Correos" para ver los correos disponibles
3. Selecciona un correo de la lista o ingresa su número
4. Haz clic en "Descargar Seleccionado" para ver su contenido
## Estructura del Proyecto
## 📂 Estructura del Proyecto
```
correo/
├── cliente_correo.py # Archivo principal con toda la funcionalidad
.
├── 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
```
## Funcionalidades Técnicas
## ⚙️ Funcionamiento Interno
### Clase ClienteCorreo
El cliente utiliza las siguientes librerías para la comunicación de red:
- **crear_interfaz()**: Inicializa la interfaz gráfica con pestañas
- **conectar()**: Establece conexión con el servidor IMAP
- **enviar_correo()**: Envía correos mediante SMTP
- **cargar_correos_imap()**: Lista correos en la bandeja de entrada
- **leer_correo_imap()**: Lee un correo específico mediante IMAP
- **listar_correos_pop()**: Lista correos disponibles mediante POP3
- **descargar_correo_pop()**: Descarga y muestra un correo mediante POP3
- **decodificar_header()**: Decodifica encabezados de correos
- **obtener_cuerpo_email()**: Extrae el cuerpo del mensaje
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.
## Seguridad
## 🛠️ Solución de Problemas Comunes
- Las contraseñas se manejan en memoria y no se almacenan
- Conexiones sin cifrado SSL/TLS (configuración típica de servidores internos)
- Para entornos de producción, se recomienda usar SSL/TLS
## Solución de Problemas
### Error de conexión
- Verifica que el servidor esté accesible en la IP 10.10.0.101
- Asegúrate de que los puertos no estén bloqueados por un firewall
- Confirma que las credenciales sean correctas
### No se pueden cargar los correos
- Verifica que hayas iniciado sesión correctamente
- Asegúrate de tener correos en tu bandeja de entrada
- Revisa que el servidor IMAP/POP3 esté funcionando
### Caracteres extraños en los correos
- El cliente intenta decodificar automáticamente varios encodings
- Si persisten problemas, verifica la codificación del correo original
## Licencia
Este proyecto es de código abierto y está disponible para uso educativo.
## Autor
Proyecto desarrollado para PSP (Programación de Servicios y Procesos)
* **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`.