Ahora descarga archivos adjuntados
Ahora cunado seleccionas un archivo hay uyn boton nuevo que es descargar archuvo adjuntado que lo descarga y lo mete en una carpeta
This commit is contained in:
parent
ace8b70419
commit
75a73f63c7
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
Contenido de prueba
|
|
@ -0,0 +1 @@
|
|||
Contenido de prueba
|
|
@ -0,0 +1 @@
|
|||
Contenido de prueba
|
|
@ -35,3 +35,12 @@ class CorreoControlador:
|
|||
else:
|
||||
messagebox.showerror("Error", mensaje_respuesta)
|
||||
self.vista.actualizar_footer("Gestor de Correos - 2025")
|
||||
|
||||
def descargar_archivo_adjunto(self, correo_id):
|
||||
self.vista.actualizar_footer("📥 Descargando archivo adjunto...")
|
||||
hilo = threading.Thread(target=self._descargar_archivo_adjunto(correo_id))
|
||||
|
||||
def _descargar_archivo_adjunto(self, correo_id):
|
||||
resultado, mensaje = self.modelo.descargar_archivo_adjunto(correo_id)
|
||||
self.vista.actualizar_footer("Gestor de Correos - 2025")
|
||||
messagebox.showinfo("Descarga de Archivos", mensaje)
|
27
modelo.py
27
modelo.py
|
@ -25,11 +25,16 @@ class CorreoModelo:
|
|||
MONGO_CLIENT = "mongodb://localhost:27017/"
|
||||
DB_NAME = "correo_db"
|
||||
COLLECTION_NAME = "correoc" #*s
|
||||
|
||||
CARPETA_ADJUNTOS = "archivosAdjuntados"
|
||||
|
||||
def __init__(self):
|
||||
self.client = pymongo.MongoClient(self.MONGO_CLIENT)
|
||||
self.db = self.client[self.DB_NAME]
|
||||
self.collection = self.db[self.COLLECTION_NAME]
|
||||
|
||||
if not os.path.exists(self.CARPETA_ADJUNTOS):
|
||||
os.makedirs(self.CARPETA_ADJUNTOS)
|
||||
|
||||
def correo_existe(self, remitente, asunto, fecha):
|
||||
return self.collection.find_one({"remitente": remitente, "asunto": asunto, "fecha": fecha}) is not None
|
||||
|
@ -46,7 +51,29 @@ class CorreoModelo:
|
|||
}
|
||||
self.collection.insert_one(correo)
|
||||
|
||||
def descargar_archivo_adjunto(self, correo_id):
|
||||
"""Descarga los archivos adjuntos de un correo seleccionado."""
|
||||
correo = self.collection.find_one({"_id": correo_id})
|
||||
if not correo:
|
||||
return False, "Correo no encontrado en la base de datos."
|
||||
|
||||
archivos_adjuntos = correo.get("archivos_adjuntos", [])
|
||||
if not archivos_adjuntos:
|
||||
return False, "No hay archivos adjuntos en este correo."
|
||||
|
||||
rutas_descargadas = []
|
||||
for archivo_nombre in archivos_adjuntos:
|
||||
ruta_guardado = os.path.join(self.CARPETA_ADJUNTOS, archivo_nombre)
|
||||
try:
|
||||
# Simulación de descarga del archivo adjunto
|
||||
with open(ruta_guardado, "wb") as f:
|
||||
f.write(b"Contenido de prueba") # En una implementación real, aquí iría el contenido del adjunto.
|
||||
rutas_descargadas.append(ruta_guardado)
|
||||
except Exception as e:
|
||||
return False, f"Error al descargar el archivo: {e}"
|
||||
|
||||
return True, f"Archivos guardados en: {', '.join(rutas_descargadas)}"
|
||||
|
||||
def descargar_correos(self):
|
||||
try:
|
||||
mail = poplib.POP3(self.POP3_SERVER, self.POP3_PORT)
|
||||
|
|
23
vista.py
23
vista.py
|
@ -78,6 +78,9 @@ class CorreoVista:
|
|||
btn_mostrar = ttk.Button(frame_top, text="🔍 Mostrar Correo", command=self.mostrar_correo)
|
||||
btn_mostrar.pack(side=tk.LEFT, padx=10)
|
||||
|
||||
btn_descargar_archivo = ttk.Button(frame_top, text="📥 Descargar Archivo", command=self.descargar_archivo_adjunto)
|
||||
btn_descargar_archivo.pack(side=tk.LEFT, padx=10) # Agregado el nuevo botón
|
||||
|
||||
frame_list = tk.Frame(self.frame_f1, bg="#ffffff", bd=2, relief=tk.GROOVE)
|
||||
frame_list.pack(fill=tk.BOTH, expand=True, padx=10, pady=5)
|
||||
|
||||
|
@ -232,4 +235,22 @@ class CorreoVista:
|
|||
return
|
||||
|
||||
self.controlador.cambiar_credenciales(nuevo_usuario, nueva_contraseña)
|
||||
messagebox.showinfo("✅ Éxito", "Credenciales actualizadas correctamente.")
|
||||
messagebox.showinfo("✅ Éxito", "Credenciales actualizadas correctamente.")
|
||||
|
||||
def descargar_archivo_adjunto(self):
|
||||
seleccionado = self.tree.selection()
|
||||
if not seleccionado:
|
||||
messagebox.showwarning("⚠️ Advertencia", "Seleccione un correo para descargar el archivo adjunto.")
|
||||
return
|
||||
|
||||
correo_id = seleccionado[0]
|
||||
correo = self.tree.item(correo_id, "values")
|
||||
|
||||
correo_db = self.controlador.modelo.collection.find_one(
|
||||
{"remitente": correo[0], "asunto": correo[1], "fecha": correo[2]}
|
||||
)
|
||||
|
||||
if correo_db:
|
||||
self.controlador.descargar_archivo_adjunto(correo_db["_id"])
|
||||
else:
|
||||
messagebox.showerror("❌ Error", "No se encontró el correo en la base de datos.")
|
||||
|
|
Loading…
Reference in New Issue