correo/README.md

164 lines
5.1 KiB
Markdown

# Cliente de Correo Electrónico
Cliente de correo electrónico con interfaz gráfica desarrollado en Python con soporte para SMTP, IMAP y POP3.
## Características
- **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
## Requisitos
- 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)
## 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
```bash
python cliente_correo.py
```
O en sistemas Unix/Linux:
```bash
python3 cliente_correo.py
```
### Inicio de Sesió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
```
correo/
├── cliente_correo.py # Archivo principal con toda la funcionalidad
└── README.md # Este archivo
```
## Funcionalidades Técnicas
### Clase ClienteCorreo
- **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
## Seguridad
- 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)