ProyectoFinalPython/correo_server/MailClient.py

42 lines
1.7 KiB
Python

import smtplib
import imaplib
class MailClient:
def __init__(self, smtp_server, smtp_port, imap_server, imap_port, username, password):
self.smtp_server = smtp_server
self.smtp_port = smtp_port
self.imap_server = imap_server
self.imap_port = imap_port
self.username = username
self.password = password
def send_email(self, recipient, subject, body):
"""Envía un correo utilizando el servidor SMTP."""
try:
with smtplib.SMTP_SSL(self.smtp_server, self.smtp_port) as server:
server.login(self.username, self.password)
message = f"Subject: {subject}\\n\\n{body}"
server.sendmail(self.username, recipient, message)
return "Correo enviado correctamente"
except Exception as e:
return f"Error al enviar el correo: {str(e)}"
def fetch_emails(self):
"""Obtiene los correos más recientes utilizando el servidor IMAP."""
try:
with imaplib.IMAP4_SSL(self.imap_server, self.imap_port) as server:
server.login(self.username, self.password)
server.select("inbox")
status, messages = server.search(None, "ALL")
email_ids = messages[0].split()
emails = []
for email_id in email_ids[-5:]: # Obtener los últimos 5 correos
status, msg_data = server.fetch(email_id, "(RFC822)")
for response_part in msg_data:
if isinstance(response_part, tuple):
emails.append(response_part[1].decode())
return emails
except Exception as e:
return f"Error al recibir correos: {str(e)}"