From 0bd8ddce4d5a6e5d69b2bf9b42f3197331d15fb7 Mon Sep 17 00:00:00 2001 From: berkay Date: Thu, 24 Apr 2025 17:41:14 +0300 Subject: [PATCH] updated email service --- Controllers/Email/send_email.py | 45 ++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/Controllers/Email/send_email.py b/Controllers/Email/send_email.py index 438433d..b928c63 100644 --- a/Controllers/Email/send_email.py +++ b/Controllers/Email/send_email.py @@ -27,17 +27,27 @@ class EmailSession: print("Email sending is disabled", params) return False receivers = [email_configs.USERNAME] - self.email_sender.send( - subject=params.subject, - receivers=receivers, - text=params.text + f" : Gonderilen [{str(receivers)}]", - html=params.html, - cc=params.cc, - bcc=params.bcc, - headers=params.headers or {}, - attachments=params.attachments or {}, - ) - return True + + # Ensure connection is established before sending + try: + # Check if connection exists, if not establish it + if not hasattr(self.email_sender, '_connected') or not self.email_sender._connected: + self.email_sender.connect() + + self.email_sender.send( + subject=params.subject, + receivers=receivers, + text=params.text + f" : Gonderilen [{str(receivers)}]", + html=params.html, + cc=params.cc, + bcc=params.bcc, + headers=params.headers or {}, + attachments=params.attachments or {}, + ) + return True + except Exception as e: + print(f"Error sending email: {e}") + raise class EmailService: @@ -54,14 +64,25 @@ class EmailService: """Create and yield a new email session with active connection.""" email_sender = EmailSender(**email_configs.as_dict()) session = EmailSession(email_sender) + connection_established = False try: + # Establish connection and set flag email_sender.connect() + # Set a flag to track connection state + email_sender._connected = True + connection_established = True yield session except Exception as e: print(f"Error with email connection: {e}") raise finally: - email_sender.close() + # Only close if connection was successfully established + if connection_established: + try: + email_sender.close() + email_sender._connected = False + except Exception as e: + print(f"Error closing email connection: {e}") @classmethod def send_email(cls, session: EmailSession, params: EmailSendModel) -> bool: