Proyecto1AVApsp/TESTING_GUIDE.md

287 lines
9.8 KiB
Markdown

# 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.