diff --git a/orchestrator/activities/email.py b/orchestrator/activities/email.py index e85ee30..3030e91 100644 --- a/orchestrator/activities/email.py +++ b/orchestrator/activities/email.py @@ -1,4 +1,5 @@ +from smtplib import SMTPServerDisconnected from temporalio import workflow, activity with workflow.unsafe.imports_passed_through(): @@ -25,6 +26,7 @@ class Email(BaseActivity): self.sender_email = sender_email self.sender_password = sender_password self.smtp_port = smtp_port + self.smtp_server = smtp_server logger.info(f"Initializing Email with {smtp_server}:{smtp_port}") @@ -99,6 +101,33 @@ class Email(BaseActivity): return msg + def send_email(self, msg: MIMEMultipart, receivers: list[str]): + """ + Sends an email to the receivers. + """ + + try: + self.server.sendmail( + self.sender_email, receivers, msg.as_string()) + except SMTPServerDisconnected as e: + self.logger.error(f"SMTP server disconnected: {e}") + self.logger.info( + f"Reconnecting to {self.smtp_server}:{self.smtp_port}") + + if self.server: + try: + self.server.quit() + except SMTPServerDisconnected as e: + self.logger.info(f"Server already disconnected: {e}") + except Exception as e: + self.logger.error(f"Failed to quit server: {e}") + raise e + + self.server = smtplib.SMTP(self.smtp_server, self.smtp_port) + self.server.starttls() + self.server.login(self.sender_email, self.sender_password) + self.server.sendmail(self.sender_email, receivers, msg.as_string()) + @activity.defn(name="send_email") async def send_email(self, input_data: dict[str, Any]) -> dict[str, Any]: """ @@ -138,8 +167,7 @@ class Email(BaseActivity): if notification.get('attachment_content') is not None], msg) - self.server.sendmail( - self.sender_email, receivers, msg.as_string()) + self.send_email(msg, receivers) except Exception as e: self.error(f"Failed to send email to {group_name}: {e}", metadata=metadata) diff --git a/values.yaml b/values.yaml index a9502de..570ae29 100644 --- a/values.yaml +++ b/values.yaml @@ -171,17 +171,33 @@ env: value: "1" - name: EMAIL_SENDER - value: "sientia-alerts@aignosi.com" + value: "vitor.santos@aignosi.com.br" - name: EMAIL_SENDER_PASSWORD valueFrom: secretKeyRef: name: smtp-credentials - key: sender-password + key: app_password - name: EMAIL_SMTP_SERVER value: "smtp.gmail.com" - name: EMAIL_SMTP_PORT value: "587" + # Application variables + - name: POSTGRES_HOST + value: "paradedb-rw.paradedb.svc.cluster.local" + - name: POSTGRES_PORT + value: "5432" + - name: POSTGRES_USER + value: "sientia" + - name: POSTGRES_PASSWORD + value: "sientia" + - name: POSTGRES_DBNAME + value: "sientia" + - name: POSTGRES_MIN_CONNECTIONS + value: "10" + - name: POSTGRES_MAX_CONNECTIONS + value: "40" + - name: KAFKA_BOOTSTRAP_SERVERS value: "kafka.kafka.svc.cluster.local:9092"