Spaces:
Sleeping
Sleeping
| import os | |
| from email.message import EmailMessage | |
| import aiosmtplib | |
| class EmailClient: | |
| def __init__(self): | |
| self.smtp_server = os.getenv("SMTP_SERVER") | |
| self.smtp_port = int(os.getenv("SMTP_PORT")) | |
| self.username = os.getenv("SMTP_USERNAME") | |
| self.password = os.getenv("SMTP_PASSWORD") | |
| async def __aenter__(self): | |
| return self | |
| async def __aexit__(self, exc_type, exc, tb): | |
| pass | |
| async def send_email( | |
| self, | |
| subject: str, | |
| body: str, | |
| to_emails: list, | |
| attachments: list = None, | |
| ): | |
| message = EmailMessage() | |
| message["From"] = os.getenv("SENDER_EMAIL") | |
| message["To"] = ", ".join(to_emails) | |
| message["Subject"] = subject | |
| message.set_content(body) | |
| if attachments: | |
| for attachment in attachments: | |
| with open(attachment, "rb") as file: | |
| file_data = file.read() | |
| file_name = file.name | |
| message.add_attachment( | |
| file_data, | |
| maintype="application", | |
| subtype="octet-stream", | |
| filename=file_name, | |
| ) | |
| await aiosmtplib.send( | |
| message, | |
| hostname=self.smtp_server, | |
| port=self.smtp_port, | |
| username=self.username, | |
| password=self.password, | |
| start_tls=True, | |
| ) | |