SIENTIAPDE-1172

SIENTIAPDE-1172
feat: update email configuration and enhance email sending functionality

- Changed EMAIL_SENDER in values.yaml to a new email address.
- Updated EMAIL_SENDER_PASSWORD key reference in values.yaml for improved security.
- Added PostgreSQL configuration parameters to values.yaml for database connectivity.
- Refactored Email class to include a new send_email method for better error handling during email transmission.
- Implemented reconnection logic for SMTP server disconnections to ensure reliable email delivery.
This commit is contained in:
vitor-aignosi
2025-07-30 08:29:11 -03:00
parent 0cda2bcb05
commit 0a5e137cc3
2 changed files with 48 additions and 4 deletions

View File

@@ -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)

View File

@@ -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"