46 lines
2.1 KiB
Python
46 lines
2.1 KiB
Python
|
|
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)
|
||
|
|
|
||
|
|
@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服务器不能为空"
|