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
|
||||
|
||||
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)
|
||||
|
||||
20
values.yaml
20
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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user