164 lines
5.1 KiB
Markdown
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)
|