| import imaplib |
| import smtplib |
| import email |
| from email.message import EmailMessage |
| import os |
|
|
| |
| EMAIL_USER = os.getenv("EMAIL_USER") |
| EMAIL_PASS = os.getenv("EMAIL_PASS") |
| IMAP_SERVER = os.getenv("IMAP_SERVER") |
| SMTP_SERVER = os.getenv("SMTP_SERVER") |
|
|
| def list_emails(count=5): |
| """Lists the most recent emails.""" |
| try: |
| mail = imaplib.IMAP4_SSL(IMAP_SERVER) |
| mail.login(EMAIL_USER, EMAIL_PASS) |
| mail.select("inbox") |
| _, data = mail.search(None, "ALL") |
| ids = data[0].split() |
| |
| emails = [] |
| for i in ids[-count:]: |
| _, msg_data = mail.fetch(i, "(RFC822)") |
| msg = email.message_from_bytes(msg_data[0][1]) |
| emails.append(f"From: {msg['from']}, Subject: {msg['subject']}") |
| mail.logout() |
| return str(emails) |
| except Exception as e: |
| return f"Error listing emails: {str(e)}" |
|
|
| def send_email(to, subject, body): |
| """Sends an email.""" |
| try: |
| msg = EmailMessage() |
| msg.set_content(body) |
| msg['Subject'] = subject |
| msg['From'] = EMAIL_USER |
| msg['To'] = to |
| |
| server = smtplib.SMTP_SSL(SMTP_SERVER, 465) |
| server.login(EMAIL_USER, EMAIL_PASS) |
| server.send_message(msg) |
| server.quit() |
| return "Email sent successfully." |
| except Exception as e: |
| return f"Error sending email: {str(e)}" |
|
|