# Guía de Pruebas - Cliente de Correo Electrónico ## Proyecto1AVApsp - Sesión del 16-19 de Febrero 2026 Esta guía te ayudará a probar todas las funcionalidades recién implementadas en el cliente de correo. --- ## 🔧 CORRECCIÓN APLICADA (19 Feb 2026) **Problema**: Error `AttributeError: '_tkinter.tkapp' object has no attribute 'notes'` al iniciar la aplicación **Causa**: La función `_load_mail_credentials()` intentaba escribir en el log antes de que el widget `notes` se hubiera creado **Solución**: Modificada la función `_log()` (app.py:4304) para verificar si el widget existe antes de usarlo **Estado**: ✅ **CORREGIDO** - La aplicación ahora arranca sin errores --- ## ✅ FUNCIONALIDADES IMPLEMENTADAS EN ESTA SESIÓN ### 1. **Guardado automático de credenciales** ### 2. **Envío a múltiples destinatarios** ### 3. **Guardado de correos enviados en el servidor IMAP** ### 4. **Eliminación del botón "Actualizar"** ### 5. **Corrección visual de indicadores de correos no leídos** --- ## 🧪 PLAN DE PRUEBAS ### PRUEBA 1: Guardado de Credenciales **Objetivo**: Verificar que las credenciales se guarden y carguen automáticamente **Pasos**: 1. Ejecuta la aplicación: `python3 app.py` 2. Ve a la pestaña "Correos" 3. Observa si los campos están precargados con tus credenciales 4. Si es la primera vez, introduce: - Usuario: `marcos@psp.es` - Contraseña: tu contraseña 5. Marca la casilla "💾 Recordar credenciales" (debe estar marcada por defecto) 6. Haz clic en "🔌 Conectar" 7. Verifica que aparezca el mensaje "Credenciales guardadas correctamente" en el log 8. **CIERRA completamente la aplicación** 9. Vuelve a ejecutar: `python3 app.py` 10. Ve a la pestaña "Correos" **Resultado esperado**: - ✅ Los campos de usuario, contraseña y servidores deben estar precargados - ✅ El archivo `.mail_config.json` existe en el directorio del proyecto - ✅ Puedes conectarte sin volver a escribir las credenciales **Para probar el borrado de credenciales**: 1. Conecta al servidor 2. Desconecta 3. Desmarca "💾 Recordar credenciales" 4. Vuelve a conectar 5. Cierra la aplicación 6. Al abrir de nuevo, los campos deben estar vacíos --- ### PRUEBA 2: Múltiples Destinatarios **Objetivo**: Verificar que se pueden enviar correos a varios destinatarios simultáneamente **Pasos**: 1. Conecta al servidor de correo 2. Haz clic en "✉️ Nuevo correo" 3. En el campo "Para:", introduce **múltiples correos separados por comas**: ``` marcos@psp.es, destinatario2@ejemplo.com, destinatario3@ejemplo.com ``` 4. También puedes usar **punto y coma**: ``` marcos@psp.es; destinatario2@ejemplo.com ``` 5. Introduce un asunto: "Prueba múltiples destinatarios" 6. Escribe un mensaje: "Este es un correo de prueba" 7. Haz clic en "📤 ENVIAR CORREO" **Resultado esperado**: - ✅ Aparece un diálogo de confirmación mostrando los 3 destinatarios - ✅ El mensaje dice: "¿Enviar correo a 3 destinatarios?" - ✅ Se listan todos los correos con un • al inicio - ✅ Al confirmar, el correo se envía correctamente - ✅ El mensaje de éxito indica "enviado a 3 destinatarios" **Prueba con email inválido**: 1. Intenta enviar a: `marcos@psp.es, correo-invalido, otro@ejemplo.com` 2. Haz clic en "📤 ENVIAR CORREO" **Resultado esperado**: - ✅ Aparece advertencia: "Los siguientes emails no son válidos: correo-invalido" - ✅ NO se envía el correo hasta que corrijas el formato --- ### PRUEBA 3: Guardado en Carpeta "Enviados" del Servidor **Objetivo**: Verificar que los correos enviados se guardan en el servidor IMAP y son visibles en Webmin **Pasos**: 1. Conecta al servidor de correo en la aplicación 2. Envía un correo de prueba: - **Para**: marcos@psp.es - **Asunto**: "Prueba guardado en servidor" - **Mensaje**: "Verificando que este correo se guarda en IMAP" 3. Observa el log en la parte inferior de la aplicación 4. Busca mensajes como: ``` Correo guardado en carpeta: Sent ``` 5. Haz clic en el botón "📧 Enviados" en la aplicación 6. **Verifica que el correo aparece en la lista** 7. Ahora abre tu navegador y ve a: `http://10.10.0.101:20000` 8. Inicia sesión en Webmin 9. Ve a "Correo" → "Usermin" → "Read Email" o accede directamente a tu cliente de correo Webmin 10. Busca la carpeta "Sent" o "Enviados" **Resultado esperado**: - ✅ El correo aparece en la pestaña "📧 Enviados" de la aplicación - ✅ El correo también aparece en Webmin en la carpeta de enviados - ✅ Si abres el correo en Webmin, debe tener el contenido correcto - ✅ Los adjuntos (si los había) también están presentes **Si falla**: - Revisa el log de la aplicación para ver qué carpeta se intentó usar - Las carpetas probadas automáticamente son: - `Sent` - `INBOX.Sent` - `Enviados` - `INBOX.Enviados` - `Sent Items` - Si tu servidor usa otro nombre, aparecerá un mensaje de error en el log --- ### PRUEBA 4: Interfaz sin Botón "Actualizar" **Objetivo**: Verificar que la interfaz se actualiza automáticamente sin necesidad del botón **Pasos**: 1. Conecta al servidor 2. Observa la barra de herramientas (arriba de la lista de correos) 3. Verifica que solo hay **un botón**: "✉️ Nuevo correo" 4. El botón "🔄 Actualizar" ya **NO debe existir** 5. Haz clic en "📧 Enviados" 6. Observa que la lista se actualiza automáticamente 7. Haz clic en "📬 Entrada" 8. Nuevamente, la lista se actualiza sin necesidad de botón **Resultado esperado**: - ✅ No existe el botón "🔄 Actualizar" - ✅ La lista se actualiza automáticamente al cambiar de carpeta - ✅ La interfaz se ve más limpia --- ### PRUEBA 5: Indicadores Visuales de Correos No Leídos **Objetivo**: Verificar que los correos no leídos se distinguen visualmente sin errores **Pasos**: 1. Conecta al servidor 2. Ve a "📬 Entrada" 3. Observa la lista de correos 4. Identifica correos no leídos y leídos **Resultado esperado**: - ✅ **Correos NO leídos**: Tienen el emoji 🔵 al inicio y texto en **negro** - ✅ **Correos leídos**: **NO** tienen emoji y el texto está en **gris** - ✅ NO aparece el error: "unknown option '-font'" - ✅ La lista se carga sin errores en el log **Apariencia visual**: ``` 🔵 [01/02/25] De: remitente@ejemplo.com | Asunto: Correo nuevo ← No leído [31/01/25] De: otro@ejemplo.com | Asunto: Correo antiguo ← Leído (gris) ``` --- ## 🔍 PRUEBAS ADICIONALES RECOMENDADAS ### Prueba de Adjuntos con Múltiples Destinatarios 1. Envía un correo a 2-3 destinatarios 2. Incluye 1-2 archivos adjuntos (imágenes, PDFs) 3. Verifica que todos los destinatarios reciben los adjuntos ### Prueba de Imágenes Pegadas (Ctrl+V) 1. Copia una imagen del portapapeles 2. En la ventana de composición, presiona Ctrl+V 3. Verifica que la imagen se muestra en la vista previa 4. Envía el correo 5. Verifica en "Enviados" que el correo tiene el adjunto ### Prueba de Longitud de Lista de Destinatarios 1. Intenta enviar a 10+ destinatarios 2. Verifica que el diálogo de confirmación muestra todos 3. Confirma que se envía correctamente --- ## 🐛 QUÉ HACER SI ENCUENTRAS ERRORES ### Error: "No se puede guardar en carpeta Sent" **Solución**: 1. Revisa el log para ver qué carpetas se intentaron 2. Conéctate a Webmin y verifica el nombre exacto de tu carpeta de enviados 3. Si tiene un nombre diferente, avísame para ajustar el código ### Error: "Los siguientes emails no son válidos" **Causa**: Formato incorrecto de email **Solución**: Verifica que todos los emails tengan el formato: `usuario@dominio.ext` ### Error: "unknown option '-font'" **Causa**: Este error ya fue corregido **Solución**: Si aún aparece, verifica que estás usando la versión más reciente de `app.py` ### Credenciales no se cargan automáticamente **Solución**: 1. Verifica que el archivo `.mail_config.json` existe 2. Ejecuta: `cat .mail_config.json` para ver su contenido 3. Verifica que la casilla "💾 Recordar credenciales" esté marcada al conectar --- ## 📊 REGISTRO DE PRUEBAS Usa esta tabla para registrar tus pruebas: | Prueba | Estado | Observaciones | |--------|--------|---------------| | Guardado de credenciales | ⬜ Pendiente / ✅ OK / ❌ Error | | | Múltiples destinatarios | ⬜ Pendiente / ✅ OK / ❌ Error | | | Guardado en servidor IMAP | ⬜ Pendiente / ✅ OK / ❌ Error | | | Sin botón "Actualizar" | ⬜ Pendiente / ✅ OK / ❌ Error | | | Indicadores visuales | ⬜ Pendiente / ✅ OK / ❌ Error | | --- ## 📝 NOTAS IMPORTANTES ### Seguridad de Credenciales - Las contraseñas se guardan con codificación Base64 (NO es encriptación real) - Cualquiera con acceso al archivo `.mail_config.json` puede decodificar la contraseña - El archivo está excluido de Git para no subirlo accidentalmente - Para mayor seguridad en producción, considera usar `cryptography.fernet` ### Limitaciones Conocidas - El servidor IMAP/SMTP debe estar accesible en `10.10.0.101` - No se usa TLS/SSL (puerto 25 y 143 son sin cifrado) - Los correos HTML se muestran como texto plano - No hay soporte para CC/BCC (se puede agregar si lo necesitas) --- ## ✨ PRÓXIMAS MEJORAS SUGERIDAS Si todo funciona correctamente, estas son funcionalidades que se pueden agregar: 1. **Campos CC y BCC** para copias de correos 2. **Responder y Reenviar** correos existentes 3. **Búsqueda de correos** por remitente, asunto o contenido 4. **Firma automática** al final de cada correo 5. **Plantillas de correo** predefinidas 6. **Encriptación real** de contraseñas con Fernet 7. **Soporte TLS/SSL** para conexiones seguras 8. **Carpetas personalizadas** (Borradores, Papelera, etc.) 9. **Exportar correos** a PDF o HTML 10. **Notificaciones de escritorio** para correos nuevos --- ## 🚀 EJECUTAR PRUEBAS Para empezar a probar, simplemente ejecuta: ```bash cd /home/marcos/Documentos/Proyecto1AVApsp python3 app.py ``` Y sigue las pruebas en orden del 1 al 5. **¡Buena suerte con las pruebas!** Si encuentras algún problema, avísame con el mensaje de error del log.