correo/README.md

5.1 KiB

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:

Instalación

  1. Clona o descarga este repositorio
  2. No se requieren dependencias adicionales

Uso

Ejecución

python cliente_correo.py

O en sistemas Unix/Linux:

python3 cliente_correo.py

Inicio de Sesión

El cliente inicia sesión automáticamente con las credenciales predefinidas:

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
  4. 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)