fix: 修复imap导致临时邮箱无法使用
This commit is contained in:
79
config.py
79
config.py
@@ -28,7 +28,7 @@ class Config:
|
|||||||
self.domain = os.getenv("DOMAIN", "").strip()
|
self.domain = os.getenv("DOMAIN", "").strip()
|
||||||
|
|
||||||
# 如果临时邮箱为null则加载IMAP
|
# 如果临时邮箱为null则加载IMAP
|
||||||
if self.temp_mail == 'null':
|
if self.temp_mail == "null":
|
||||||
self.imap = True
|
self.imap = True
|
||||||
self.imap_server = os.getenv("IMAP_SERVER", "").strip()
|
self.imap_server = os.getenv("IMAP_SERVER", "").strip()
|
||||||
self.imap_port = os.getenv("IMAP_PORT", "").strip()
|
self.imap_port = os.getenv("IMAP_PORT", "").strip()
|
||||||
@@ -50,40 +50,76 @@ class Config:
|
|||||||
"imap_port": self.imap_port,
|
"imap_port": self.imap_port,
|
||||||
"imap_user": self.imap_user,
|
"imap_user": self.imap_user,
|
||||||
"imap_pass": self.imap_pass,
|
"imap_pass": self.imap_pass,
|
||||||
"imap_dir": self.imap_dir
|
"imap_dir": self.imap_dir,
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_domain(self):
|
def get_domain(self):
|
||||||
return self.domain
|
return self.domain
|
||||||
|
|
||||||
def check_config(self):
|
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):
|
def print_config(self):
|
||||||
# logging.info(f"\033[32m临时邮箱: {self.temp_mail}\033[0m")
|
|
||||||
if self.imap:
|
if self.imap:
|
||||||
logging.info(f"\033[32mIMAP服务器: {self.imap_server}\033[0m")
|
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_port}\033[0m")
|
||||||
logging.info(f"\033[32mIMAP用户名: {self.imap_user}\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密码: {'*' * len(self.imap_pass)}\033[0m")
|
||||||
logging.info(f"\033[32mIMAP收件箱目录: {self.imap_dir}\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.temp_mail}@{self.domain}\033[0m")
|
||||||
logging.info(f"\033[32m域名: {self.domain}\033[0m")
|
logging.info(f"\033[32m域名: {self.domain}\033[0m")
|
||||||
|
|
||||||
@@ -93,7 +129,6 @@ if __name__ == "__main__":
|
|||||||
try:
|
try:
|
||||||
config = Config()
|
config = Config()
|
||||||
print("环境变量加载成功!")
|
print("环境变量加载成功!")
|
||||||
config.get_temp_mail()
|
config.print_config()
|
||||||
config.get_domain()
|
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
print(f"错误: {e}")
|
print(f"错误: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user