71 lines
3.0 KiB
Python
71 lines
3.0 KiB
Python
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()
|
|
|
|
|