初始化提交,包含完整的邮件系统代码
This commit is contained in:
79
config.py
Normal file
79
config.py
Normal file
@@ -0,0 +1,79 @@
|
||||
import os
|
||||
import secrets
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# 加载环境变量
|
||||
load_dotenv()
|
||||
|
||||
class BaseConfig:
|
||||
"""基础配置类"""
|
||||
# 应用设置
|
||||
SECRET_KEY = os.environ.get('SECRET_KEY') or secrets.token_hex(16)
|
||||
DEBUG = False
|
||||
|
||||
# 数据库设置
|
||||
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'sqlite:///email_system.db'
|
||||
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
||||
|
||||
# SMTP服务器设置
|
||||
SMTP_HOST = '0.0.0.0'
|
||||
SMTP_PORT = 25
|
||||
|
||||
# 存储设置
|
||||
MAIL_STORAGE_PATH = os.path.join(os.getcwd(), 'email_data')
|
||||
|
||||
# 日志设置
|
||||
LOG_LEVEL = 'INFO'
|
||||
LOG_FILE = os.path.join(os.getcwd(), 'logs', 'email_system.log')
|
||||
|
||||
# API设置
|
||||
API_RATE_LIMIT = '200/hour'
|
||||
API_TOKEN_EXPIRE = 3600 * 24 * 7 # 7天
|
||||
|
||||
# 邮件域名配置
|
||||
MAIL_DOMAINS = os.environ.get('MAIL_DOMAINS', 'example.com,mail.example.com').split(',')
|
||||
|
||||
|
||||
class DevelopmentConfig(BaseConfig):
|
||||
"""开发环境配置"""
|
||||
DEBUG = True
|
||||
LOG_LEVEL = 'DEBUG'
|
||||
|
||||
# 使用内存数据库方便开发
|
||||
# SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'
|
||||
|
||||
|
||||
class TestingConfig(BaseConfig):
|
||||
"""测试环境配置"""
|
||||
TESTING = True
|
||||
DEBUG = True
|
||||
|
||||
# 使用内存数据库进行测试
|
||||
SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'
|
||||
|
||||
# 使用随机端口进行测试
|
||||
SMTP_PORT = 2525
|
||||
|
||||
|
||||
class ProductionConfig(BaseConfig):
|
||||
"""生产环境配置"""
|
||||
DEBUG = False
|
||||
LOG_LEVEL = 'ERROR'
|
||||
|
||||
# SMTP服务器设置
|
||||
SMTP_PORT = 25
|
||||
|
||||
# API设置
|
||||
API_RATE_LIMIT = '100/hour'
|
||||
|
||||
|
||||
# 配置映射
|
||||
config_by_name = {
|
||||
'development': DevelopmentConfig,
|
||||
'testing': TestingConfig,
|
||||
'production': ProductionConfig,
|
||||
'default': DevelopmentConfig
|
||||
}
|
||||
|
||||
# 根据环境变量选择配置
|
||||
active_config = config_by_name.get(os.environ.get('FLASK_ENV', 'default'), DevelopmentConfig)
|
||||
Reference in New Issue
Block a user