From ae90c1ec1b330ca621b73bc13451888f9a0c910b Mon Sep 17 00:00:00 2001 From: chengchongzhen <15939054361@163.com> Date: Tue, 21 Jan 2025 14:02:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dimap=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E9=82=AE=E7=AE=B1=E6=97=A0=E6=B3=95=E4=BD=BF?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 79 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 22 deletions(-) diff --git a/config.py b/config.py index 982d7eb..5cd8d2f 100644 --- a/config.py +++ b/config.py @@ -28,7 +28,7 @@ class Config: self.domain = os.getenv("DOMAIN", "").strip() # 如果临时邮箱为null则加载IMAP - if self.temp_mail == 'null': + if self.temp_mail == "null": self.imap = True self.imap_server = os.getenv("IMAP_SERVER", "").strip() self.imap_port = os.getenv("IMAP_PORT", "").strip() @@ -50,40 +50,76 @@ class Config: "imap_port": self.imap_port, "imap_user": self.imap_user, "imap_pass": self.imap_pass, - "imap_dir": self.imap_dir + "imap_dir": self.imap_dir, } def get_domain(self): return self.domain def check_config(self): - if not self.check_is_valid(self.temp_mail): - raise ValueError("临时邮箱未配置,请在 .env 文件中设置 TEMP_MAIL") - if not self.check_is_valid(self.domain): - raise ValueError("域名未配置,请在 .env 文件中设置 DOMAIN") - if not self.imap_server == 'null' and not self.check_is_valid(self.imap_server): - raise ValueError("IMAP服务器未配置,请在 .env 文件中设置 IMAP_SERVER") - if not self.imap_port == 'null' and not self.check_is_valid(self.imap_port): - raise ValueError("IMAP端口未配置,请在 .env 文件中设置 IMAP_PORT") - if not self.imap_user == 'null' and not self.check_is_valid(self.imap_user): - raise ValueError("IMAP用户名未配置,请在 .env 文件中设置 IMAP_USER") - if not self.imap_pass == 'null' and not self.check_is_valid(self.imap_pass): - raise ValueError("IMAP密码未配置,请在 .env 文件中设置 IMAP_PASS") - if not self.imap_dir == 'null' and not self.check_is_valid(self.imap_dir): - raise ValueError("IMAP收件箱目录未配置,请在 .env 文件中设置 IMAP_DIRECTORY") + """检查配置项是否有效 - def check_is_valid(self, str): - return len(str.strip()) > 0 + 检查规则: + 1. 如果使用 tempmail.plus,需要配置 TEMP_MAIL 和 DOMAIN + 2. 如果使用 IMAP,需要配置 IMAP_SERVER、IMAP_PORT、IMAP_USER、IMAP_PASS + 3. IMAP_DIR 是可选的 + """ + # 基础配置检查 + required_configs = { + "domain": "域名", + } + + # 检查基础配置 + for key, name in required_configs.items(): + if not self.check_is_valid(getattr(self, key)): + raise ValueError(f"{name}未配置,请在 .env 文件中设置 {key.upper()}") + + # 检查邮箱配置 + if self.temp_mail != "null": + # tempmail.plus 模式 + if not self.check_is_valid(self.temp_mail): + raise ValueError("临时邮箱未配置,请在 .env 文件中设置 TEMP_MAIL") + else: + # IMAP 模式 + imap_configs = { + "imap_server": "IMAP服务器", + "imap_port": "IMAP端口", + "imap_user": "IMAP用户名", + "imap_pass": "IMAP密码", + } + + for key, name in imap_configs.items(): + value = getattr(self, key) + if value == "null" or not self.check_is_valid(value): + raise ValueError( + f"{name}未配置,请在 .env 文件中设置 {key.upper()}" + ) + + # IMAP_DIR 是可选的,如果设置了就检查其有效性 + if self.imap_dir != "null" and not self.check_is_valid(self.imap_dir): + raise ValueError( + "IMAP收件箱目录配置无效,请在 .env 文件中正确设置 IMAP_DIR" + ) + + def check_is_valid(self, value): + """检查配置项是否有效 + + Args: + value: 配置项的值 + + Returns: + bool: 配置项是否有效 + """ + return isinstance(value, str) and len(str(value).strip()) > 0 def print_config(self): - # logging.info(f"\033[32m临时邮箱: {self.temp_mail}\033[0m") if self.imap: logging.info(f"\033[32mIMAP服务器: {self.imap_server}\033[0m") logging.info(f"\033[32mIMAP端口: {self.imap_port}\033[0m") logging.info(f"\033[32mIMAP用户名: {self.imap_user}\033[0m") logging.info(f"\033[32mIMAP密码: {'*' * len(self.imap_pass)}\033[0m") logging.info(f"\033[32mIMAP收件箱目录: {self.imap_dir}\033[0m") - if self.temp_mail != 'null': + if self.temp_mail != "null": logging.info(f"\033[32m临时邮箱: {self.temp_mail}@{self.domain}\033[0m") logging.info(f"\033[32m域名: {self.domain}\033[0m") @@ -93,7 +129,6 @@ if __name__ == "__main__": try: config = Config() print("环境变量加载成功!") - config.get_temp_mail() - config.get_domain() + config.print_config() except ValueError as e: print(f"错误: {e}")