fix: 修复imap导致临时邮箱无法使用
This commit is contained in:
75
config.py
75
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):
|
||||
"""检查配置项是否有效
|
||||
|
||||
检查规则:
|
||||
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")
|
||||
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")
|
||||
else:
|
||||
# IMAP 模式
|
||||
imap_configs = {
|
||||
"imap_server": "IMAP服务器",
|
||||
"imap_port": "IMAP端口",
|
||||
"imap_user": "IMAP用户名",
|
||||
"imap_pass": "IMAP密码",
|
||||
}
|
||||
|
||||
def check_is_valid(self, str):
|
||||
return len(str.strip()) > 0
|
||||
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}")
|
||||
|
||||
Reference in New Issue
Block a user