60 lines
2.3 KiB
Python
60 lines
2.3 KiB
Python
# emailClient.py
|
|
import smtplib
|
|
import imaplib
|
|
import email
|
|
from email.mime.text import MIMEText
|
|
from email.mime.multipart import MIMEMultipart
|
|
import threading
|
|
|
|
class EmailClient:
|
|
def __init__(self):
|
|
self.server_ip = "192.168.120.103"
|
|
self.ports = {
|
|
"SMTP": 25,
|
|
"SMTP-S": 465,
|
|
"SMTP-SUBMISSION": 587,
|
|
"IMAP": 143,
|
|
"IMAP-S": 993
|
|
}
|
|
|
|
def enviar_correo(self, email_user, password, destinatario, asunto, mensaje):
|
|
def enviar():
|
|
try:
|
|
with smtplib.SMTP(self.server_ip, self.ports["SMTP"]) as smtp:
|
|
smtp.login(email_user, password)
|
|
msg = MIMEMultipart()
|
|
msg["From"] = email_user
|
|
msg["To"] = destinatario
|
|
msg["Subject"] = asunto
|
|
msg.attach(MIMEText(mensaje, "plain"))
|
|
smtp.sendmail(email_user, destinatario, msg.as_string())
|
|
print("Correo enviado correctamente.")
|
|
except Exception as e:
|
|
print(f"Error al enviar el correo: {e}")
|
|
|
|
thread = threading.Thread(target=enviar)
|
|
thread.start()
|
|
|
|
def recibir_correos(self, email_user, password, text_widget):
|
|
def recibir():
|
|
try:
|
|
with imaplib.IMAP4_SSL(self.server_ip, self.ports["IMAP-S"]) as mail:
|
|
mail.login(email_user, password)
|
|
mail.select("inbox")
|
|
status, mensajes_no_leidos = mail.search(None, 'UNSEEN')
|
|
no_leidos = mensajes_no_leidos[0].split()
|
|
|
|
text_widget.delete("1.0", "end")
|
|
text_widget.insert("end", f"Tienes {len(no_leidos)} correos no leídos.\n")
|
|
|
|
for num in no_leidos:
|
|
status, data = mail.fetch(num, '(RFC822)')
|
|
mensaje = email.message_from_bytes(data[0][1])
|
|
text_widget.insert("end", f"[NO LEÍDO] {mensaje['Subject']}\n")
|
|
mail.store(num, '+FLAGS', '\\Seen')
|
|
except Exception as e:
|
|
text_widget.insert("end", f"Error al recibir correos: {e}\n")
|
|
|
|
thread = threading.Thread(target=recibir)
|
|
thread.start()
|