42 lines
1.7 KiB
Python
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)}"
|