diff --git a/agent/tools/email.py b/agent/tools/email.py index 45fd355ff1..14a6eb241d 100644 --- a/agent/tools/email.py +++ b/agent/tools/email.py @@ -19,6 +19,7 @@ from abc import ABC import json import smtplib import logging +import ssl from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header @@ -116,11 +117,17 @@ class Email(ToolBase, ABC): if self.check_if_canceled("Email processing"): return - context = smtplib.ssl.create_default_context() - with smtplib.SMTP(self._param.smtp_server, self._param.smtp_port) as server: - server.ehlo() - server.starttls(context=context) + context = ssl.create_default_context() + if int(self._param.smtp_port) == 465: + server = smtplib.SMTP_SSL(self._param.smtp_server, self._param.smtp_port, timeout=10, context=context) + else: + server = smtplib.SMTP(self._param.smtp_server, self._param.smtp_port, timeout=10) + + with server: server.ehlo() + if int(self._param.smtp_port) != 465: + server.starttls(context=context) + server.ehlo() # Login smtp_username = self._param.smtp_username or self._param.email diff --git a/api/utils/web_utils.py b/api/utils/web_utils.py index d561e944d1..c0ab4b00d7 100644 --- a/api/utils/web_utils.py +++ b/api/utils/web_utils.py @@ -162,7 +162,8 @@ async def send_email_html(to_email: str, subject: str, template_key: str, **cont smtp = aiosmtplib.SMTP( hostname=settings.MAIL_SERVER, port=settings.MAIL_PORT, - use_tls=True, + use_tls=settings.MAIL_USE_SSL, + start_tls=settings.MAIL_USE_TLS, timeout=10, )