import tkinter as tk from tkinter import ttk, messagebox from app.email.emailClient import EmailClient import threading class EmailTab: def __init__(self, notebook, panel_derecho): self.panel_derecho = panel_derecho # Referencia al Panel Derecho self.email_client = EmailClient() self.tab = ttk.Frame(notebook) notebook.add(self.tab, text="\U0001F4E7 Correo") self.setup_ui() def setup_ui(self): """Configura la interfaz gráfica de la pestaña de correo.""" frame_principal = tk.Frame(self.tab, bg="white", padx=10, pady=10) frame_principal.pack(fill="both", expand=True) frame_principal.columnconfigure(0, weight=1) # Enviar correo tk.Label(frame_principal, text="✉️ Enviar Correo", font=("Helvetica", 14, "bold"), bg="white").grid(row=1, column=0, pady=5) frame_envio = tk.Frame(frame_principal, bg="white") frame_envio.grid(row=2, column=0, pady=5, sticky="ew") frame_envio.columnconfigure(1, weight=1) tk.Label(frame_envio, text="Para:", font=("Helvetica", 11), bg="white").grid(row=0, column=0, sticky="w") self.entry_destinatario = tk.Entry(frame_envio, font=("Helvetica", 11)) self.entry_destinatario.grid(row=0, column=1, sticky="ew", padx=5) tk.Label(frame_envio, text="Asunto:", font=("Helvetica", 11), bg="white").grid(row=1, column=0, sticky="w") self.entry_asunto = tk.Entry(frame_envio, font=("Helvetica", 11)) self.entry_asunto.grid(row=1, column=1, sticky="ew", padx=5) tk.Label(frame_envio, text="Mensaje:", font=("Helvetica", 11), bg="white").grid(row=2, column=0, sticky="w", pady=3) self.text_mensaje = tk.Text(frame_envio, height=5, font=("Helvetica", 11)) self.text_mensaje.grid(row=3, column=0, columnspan=2, sticky="ew", padx=5) # Botón de enviar tk.Button( frame_envio, text="📨 Enviar Correo", font=("Helvetica", 11, "bold"), bg="green", fg="white", command=self.enviar_correo ).grid(row=4, column=0, columnspan=2, pady=10) def enviar_correo(self): """Envía un correo en un hilo separado.""" email, password = self.panel_derecho.get_credentials() # Obtener credenciales del panel derecho if not email or not password: messagebox.showerror("Error", "⚠️ Debes iniciar sesión primero en el Panel Derecho.") return def envio(): self.email_client.enviar_correo( email, password, self.entry_destinatario.get(), self.entry_asunto.get(), self.text_mensaje.get("1.0", tk.END).strip() ) messagebox.showinfo("Éxito", "✅ Correo enviado correctamente.") self.entry_destinatario.delete(0, tk.END) self.entry_asunto.delete(0, tk.END) self.text_mensaje.delete("1.0", tk.END) threading.Thread(target=envio, daemon=True).start()