import os from dotenv import load_dotenv load_dotenv() class Config: # 邮件协议 MAIL_PROTOCOL = os.getenv("MAIL_PROTOCOL", "IMAP").upper() IMAP_SERVER = os.getenv("IMAP_SERVER") POP3_SERVER = os.getenv("POP3_SERVER") SMTP_SERVER = os.getenv("SMTP_SERVER") MAIL_USER = os.getenv("MAIL_USER") MAIL_PASS = os.getenv("MAIL_PASS") RECIPIENT_EMAIL = os.getenv("RECIPIENT_EMAIL") SMTP_PORT = int(os.getenv("SMTP_PORT", 465)) IMAP_PORT = int(os.getenv("IMAP_PORT", 993)) POP3_PORT = int(os.getenv("POP3_PORT", 995)) # 工具配置 TEMP_DIR = os.getenv("TEMP_DIR", "./temp") KEEP_TEMP_FILES = os.getenv("KEEP_TEMP_FILES", "False").lower() == "true" SUPPORTED_INPUT_FORMATS = set(fmt.strip().lower() for fmt in os.getenv("SUPPORTED_INPUT_FORMATS", "jpg,jpeg,png,webp,gif,bmp,tiff").split(",")) SUPPORTED_OUTPUT_FORMATS = set(fmt.strip().lower() for fmt in os.getenv("SUPPORTED_OUTPUT_FORMATS", "jpg,jpeg,png,webp,gif,bmp,tiff").split(",")) DEFAULT_QUALITY = int(os.getenv("DEFAULT_QUALITY", 85)) # 新增功能 ALLOWED_DOMAINS = [d.strip() for d in os.getenv("ALLOWED_DOMAINS", "").split(",") if d.strip()] SPLIT_VOLUME_SIZE_MB = int(os.getenv("SPLIT_VOLUME_SIZE_MB", 0)) MAX_ATTACHMENT_SIZE_MB = int(os.getenv("MAX_ATTACHMENT_SIZE_MB", 25)) MAX_EMAILS_PER_RUN = int(os.getenv("MAX_EMAILS_PER_RUN", 10)) KEEP_ORIGINAL_ATTACHMENT_COUNT = os.getenv("KEEP_ORIGINAL_ATTACHMENT_COUNT", "True").lower() == "true" FLATTEN_OUTPUT = os.getenv("FLATTEN_OUTPUT", "False").lower() == "true" # 协议同意 AGREED_TOS = os.getenv("AGREED_TOS", "False").lower() == "true" AGREEMENT_FILE = os.getenv("AGREEMENT_FILE", "./AGREED") ADMIN_EMAIL = os.getenv("ADMIN_EMAIL", MAIL_USER) POLL_INTERVAL_SECONDS = int(os.getenv("POLL_INTERVAL_SECONDS", 60)) RUN_FOREVER = os.getenv("RUN_FOREVER", "true").lower() == "true" @classmethod def validate(cls): assert cls.MAIL_USER and cls.MAIL_PASS, "邮箱账号密码不能为空" assert cls.SMTP_SERVER, "SMTP服务器不能为空" if cls.MAIL_PROTOCOL == "IMAP": assert cls.IMAP_SERVER, "IMAP服务器不能为空" else: assert cls.POP3_SERVER, "POP3服务器不能为空"