# -*- coding: utf-8 -*- import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.utils import formataddr from typing import List class SendMail(object): host, port = "smtp.gmail.com", 465 username = "youraddress@gmail.com" password = "your_app_password" sender = formataddr(("Your Name", "youraddress@gmail.com")) def __init__(self): try: self.server = smtplib.SMTP_SSL(self.host, self.port) self.server.ehlo() self.server.login(self.username, self.password) print("Connected to GMail server") except Exception as err: print(f"Error connecting to server: {str(err)}") def __del__(self): try: self.server.close() print("Connection closed") except Exception as err: print(f"Error occurred while closing connection: {str(err)}") def send(self, receivers: List[str], subject: str, body: str, subtype: str = "html") -> bool: try: message = MIMEMultipart("alternative") message["To"] = ", ".join(receivers) message["From"] = self.sender message["Subject"] = subject message.attach(MIMEText(body, subtype)) self.server.sendmail(self.sender, receivers, message.as_string()) print("Email sent") return True except Exception as err: print(f"Error occurred while sending email: {str(err)}") return False