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:
@@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
from smtplib import SMTPServerDisconnected
|
||||||
from temporalio import workflow, activity
|
from temporalio import workflow, activity
|
||||||
|
|
||||||
with workflow.unsafe.imports_passed_through():
|
with workflow.unsafe.imports_passed_through():
|
||||||
@@ -25,6 +26,7 @@ class Email(BaseActivity):
|
|||||||
self.sender_email = sender_email
|
self.sender_email = sender_email
|
||||||
self.sender_password = sender_password
|
self.sender_password = sender_password
|
||||||
self.smtp_port = smtp_port
|
self.smtp_port = smtp_port
|
||||||
|
self.smtp_server = smtp_server
|
||||||
|
|
||||||
logger.info(f"Initializing Email with {smtp_server}:{smtp_port}")
|
logger.info(f"Initializing Email with {smtp_server}:{smtp_port}")
|
||||||
|
|
||||||
@@ -99,6 +101,33 @@ class Email(BaseActivity):
|
|||||||
|
|
||||||
return msg
|
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")
|
@activity.defn(name="send_email")
|
||||||
async def send_email(self, input_data: dict[str, Any]) -> dict[str, Any]:
|
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],
|
if notification.get('attachment_content') is not None],
|
||||||
msg)
|
msg)
|
||||||
|
|
||||||
self.server.sendmail(
|
self.send_email(msg, receivers)
|
||||||
self.sender_email, receivers, msg.as_string())
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.error(f"Failed to send email to {group_name}: {e}",
|
self.error(f"Failed to send email to {group_name}: {e}",
|
||||||
metadata=metadata)
|
metadata=metadata)
|
||||||
|
|||||||
20
values.yaml
20
values.yaml
@@ -171,17 +171,33 @@ env:
|
|||||||
value: "1"
|
value: "1"
|
||||||
|
|
||||||
- name: EMAIL_SENDER
|
- name: EMAIL_SENDER
|
||||||
value: "sientia-alerts@aignosi.com"
|
value: "vitor.santos@aignosi.com.br"
|
||||||
- name: EMAIL_SENDER_PASSWORD
|
- name: EMAIL_SENDER_PASSWORD
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: smtp-credentials
|
name: smtp-credentials
|
||||||
key: sender-password
|
key: app_password
|
||||||
- name: EMAIL_SMTP_SERVER
|
- name: EMAIL_SMTP_SERVER
|
||||||
value: "smtp.gmail.com"
|
value: "smtp.gmail.com"
|
||||||
- name: EMAIL_SMTP_PORT
|
- name: EMAIL_SMTP_PORT
|
||||||
value: "587"
|
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
|
- name: KAFKA_BOOTSTRAP_SERVERS
|
||||||
value: "kafka.kafka.svc.cluster.local:9092"
|
value: "kafka.kafka.svc.cluster.local:9092"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user