diff --git a/notifiers/providers/email.py b/notifiers/providers/email.py index 2bc7dcf2..9e021a0d 100644 --- a/notifiers/providers/email.py +++ b/notifiers/providers/email.py @@ -179,7 +179,7 @@ def _send_notification(self, data: dict) -> Response: errors = None try: configuration = self._get_configuration(data) - if not self.configuration or not self.smtp_server or self.configuration != configuration: + if not self.configuration or not self._is_smtp_connection_alive(self.smtp_server) or self.configuration != configuration: self._connect_to_server(data) email = self._build_email(data) if data.get("attachments"): @@ -193,3 +193,13 @@ def _send_notification(self, data: dict) -> Response: ) as e: errors = [str(e)] return self.create_response(data, errors=errors) + + @staticmethod + def _is_smtp_connection_alive(smtp_server: smtplib.SMTP): + if smtp_server is None: + return False + try: + status = smtp_server.noop()[0] + return status == 250 + except Exception: + return False