From a867d538a579d536d40215dd1b2c041a94b25030 Mon Sep 17 00:00:00 2001 From: Kumi Date: Tue, 8 Feb 2022 06:07:26 +0000 Subject: [PATCH] Fixes --- classes/logger.py | 21 +++++++++++++++++++++ classes/mission.py | 8 +++++--- worker.py | 22 +++++++++++++--------- 3 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 classes/logger.py diff --git a/classes/logger.py b/classes/logger.py new file mode 100644 index 0000000..f452d32 --- /dev/null +++ b/classes/logger.py @@ -0,0 +1,21 @@ +import logging +import threading + +from datetime import datetime + + +class Logger: + @staticmethod + def _format(message: str, severity: str) -> str: + thread = threading.current_thread().name + datestr = str(datetime.now()) + return f"{datestr} - {thread} - {severity} - {message}" + + def debug(self, message: str) -> None: + print(self.__class__()._format(message, "DEBUG")) + + def info(self, message: str) -> None: + print(self.__class__()._format(message, "INFO")) + + def error(self, message: str) -> None: + print(self.__class__()._format(message, "ERROR")) \ No newline at end of file diff --git a/classes/mission.py b/classes/mission.py index cd2207d..e9c24ff 100644 --- a/classes/mission.py +++ b/classes/mission.py @@ -27,14 +27,16 @@ class Mission: for attachment in self.attachments: try: - content = open(attachment, "rb").read() - message.add_attachment(content) + content = open(attachment[0], "rb").read() + filename = attachment[0].split("/")[-1] + message.add_attachment(content, *(attachment[1].split("/") if len(attachment) > 1 else ["application", "octet-stream"]), filename=filename) except: + raise pass message["From"] = self.sender message["To"] = ",".join(self.recipients) message["Subject"] = self.subject - return message \ No newline at end of file + return message diff --git a/worker.py b/worker.py index 700768d..12de0fe 100644 --- a/worker.py +++ b/worker.py @@ -5,8 +5,10 @@ import pathlib from classes.config import Config from classes.mission import Mission from classes.smtp import SMTP +from classes.logger import Logger +logger = Logger() config = Config.fromFile("settings.ini") tempdir = config.getTempDir() @@ -17,14 +19,16 @@ if not tempdir.exists(): elif not tempdir.is_dir(): raise ValueError(f"Temp Dir {str(tempdir)} exists and is not a directory.") -messages = [] - -for f in tempdir.glob("*.mmm"): - mission = Mission.fromFile(f) - messages.append(mission.to_message()) - f.unlink() - smtp = SMTP.fromConfig(config) -for message in messages: - smtp.send_message(message) \ No newline at end of file +for f in tempdir.glob("*.mmm"): + logger.debug(f"Found file {f}") + try: + mission = Mission.fromFile(f) + message = mission.to_message() + logger.debug("Sending email...") + smtp.send_message(message) + f.unlink() + except Exception as e: + logger.error(f"An error has occurred while processing {f}: {e}") +