Skip to content

Commit

Permalink
fix: 修复imap导致临时邮箱无法使用
Browse files Browse the repository at this point in the history
  • Loading branch information
chengazhen committed Jan 21, 2025
1 parent f1a3f99 commit ae90c1e
Showing 1 changed file with 58 additions and 23 deletions.
81 changes: 58 additions & 23 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def __init__(self):
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()
Expand All @@ -50,40 +50,76 @@ def get_imap(self):
"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")

Expand All @@ -93,7 +129,6 @@ def print_config(self):
try:
config = Config()
print("环境变量加载成功!")
config.get_temp_mail()
config.get_domain()
config.print_config()
except ValueError as e:
print(f"错误: {e}")

0 comments on commit ae90c1e

Please sign in to comment.