Files

50 lines
2.2 KiB
Python
Raw Permalink Normal View History

2026-04-18 23:04:03 +08:00
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)
2026-04-18 23:58:27 +08:00
POLL_INTERVAL_SECONDS = int(os.getenv("POLL_INTERVAL_SECONDS", 60))
RUN_FOREVER = os.getenv("RUN_FOREVER", "true").lower() == "true"
2026-04-18 23:04:03 +08:00
@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:
2026-04-18 23:58:27 +08:00
assert cls.POP3_SERVER, "POP3服务器不能为空"