new readme
This commit is contained in:
parent
5719219f58
commit
6acb5ab84a
201
README.md
201
README.md
|
|
@ -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
|

|
||||||
|

|
||||||
|
|
||||||
- **Envío de correos** mediante SMTP (puerto 25)
|
## 🚀 Características Principales
|
||||||
- **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
|
|
||||||
|
|
||||||
## 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)
|
## 📋 Requisitos Previos
|
||||||
- Bibliotecas de Python:
|
|
||||||
- tkinter (incluido con Python)
|
|
||||||
- Pillow (para previsualización de imágenes)
|
|
||||||
- smtplib, imaplib, poplib, email (incluidos)
|
|
||||||
|
|
||||||
## Configuración del Servidor
|
* **Python 3.11 o superior** (Recomendado 3.12).
|
||||||
|
* Librerías estándar de Python (incluidas por defecto):
|
||||||
El cliente está configurado por defecto para conectarse a:
|
* `tkinter` (Interfaz gráfica)
|
||||||
|
* `smtplib`, `imaplib`, `poplib` (Protocolos de red)
|
||||||
- **IP del servidor**: 10.10.0.101
|
* `email` (Manejo de formato MIME)
|
||||||
- **Puerto SMTP**: 25
|
* Librería externa para imágenes:
|
||||||
- **Puerto IMAP**: 143
|
* `Pillow` (PIL)
|
||||||
- **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
|
|
||||||
|
|
||||||
|
### Instalación de dependencias
|
||||||
```bash
|
```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
|
```bash
|
||||||
python3 cliente_correo.py
|
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:
|
## 📂 Estructura del Proyecto
|
||||||
- **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
|
|
||||||
|
|
||||||
```
|
```
|
||||||
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
|
└── 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
|
1. **`smtplib`**: Se conecta al puerto 25 para enviar mensajes construidos con `MIMEMultipart`.
|
||||||
- **conectar()**: Establece conexión con el servidor IMAP
|
2. **`imaplib`**: Se conecta al puerto 143, permite listar correos (`search`), obtener cabeceras (`fetch`) y leer contenido bajo demanda.
|
||||||
- **enviar_correo()**: Envía correos mediante SMTP
|
3. **`poplib`**: Se conecta al puerto 110, permitiendo obtener el número total de mensajes y descargarlos secuencialmente.
|
||||||
- **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
|
|
||||||
|
|
||||||
## Seguridad
|
## 🛠️ Solución de Problemas Comunes
|
||||||
|
|
||||||
- Las contraseñas se manejan en memoria y no se almacenan
|
* **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).
|
||||||
- Conexiones sin cifrado SSL/TLS (configuración típica de servidores internos)
|
* **Error de Tkinter en Mac**: Ejecuta `./ejecutar.sh` o revisa `INSTALACION.md`.
|
||||||
- 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)
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue