diff --git a/app/__init__.py b/app/__init__.py index 9e5a2cc..c0c1e24 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,15 +1,7 @@ from flask import Flask from .config import Config -from .models import db - def create_app(): app = Flask(__name__) app.config.from_object(Config) - - # 初始化数据库 - db.init_app(app) - with app.app_context(): - db.create_all() - return app \ No newline at end of file diff --git a/app/config.py b/app/config.py index 030f876..5764a08 100644 --- a/app/config.py +++ b/app/config.py @@ -1,9 +1,4 @@ class Config: - # 使用 1Panel MySQL 内部连接 - SQLALCHEMY_DATABASE_URI = 'mysql://gitea_HN5jYh:mysql_KbBZTN@1Panel-mysql-vjz9:3306/gitea_2l82ep' - # 如果内部连接不通,可以尝试使用外部连接 - # SQLALCHEMY_DATABASE_URI = 'mysql://gitea_HN5jYh:mysql_KbBZTN@rnpanel.586vip.cn:3306/gitea_2l82ep' - SQLALCHEMY_TRACK_MODIFICATIONS = False # 使用 1Panel Redis 内部连接 REDIS_URL = "redis://1Panel-redis-r3Pz:6379/0" # 如果内部连接不通,可以尝试使用外部连接 diff --git a/app/models.py b/app/models.py deleted file mode 100644 index ecffcf6..0000000 --- a/app/models.py +++ /dev/null @@ -1,11 +0,0 @@ -from flask_sqlalchemy import SQLAlchemy - -db = SQLAlchemy() - -class Email(db.Model): - id = db.Column(db.Integer, primary_key=True) - subject = db.Column(db.String(255)) - sender = db.Column(db.String(255)) - recipient = db.Column(db.String(255)) - body = db.Column(db.Text) - timestamp = db.Column(db.DateTime, server_default=db.func.now()) \ No newline at end of file diff --git a/app/utils.py b/app/utils.py index bcf61f8..08eeb94 100644 --- a/app/utils.py +++ b/app/utils.py @@ -5,7 +5,6 @@ import logging from email.parser import BytesParser from email.policy import default from datetime import datetime -from .models import db, Email import redis import smtpd import asyncore @@ -23,23 +22,6 @@ logger = logging.getLogger('smtp_server') redis_client = redis.from_url(Config.REDIS_URL) -def receive_email(): - # 这里实现邮件接收逻辑 - # 假设我们从某个 SMTP 服务器接收邮件 - # 解析邮件并存储到 Redis - # 示例: - raw_email = b'...' # 这里应该是接收到的原始邮件内容 - email = BytesParser(policy=default).parsebytes(raw_email) - email_data = { - 'subject': email['subject'], - 'sender': email['from'], - 'recipient': email['to'], - 'body': email.get_body(preferencelist=('plain')).get_content() - } - # 将邮件信息存储到 Redis - redis_client.hmset(f'email:{email_data['subject']}', email_data) - - class CustomSMTPServer(smtpd.SMTPServer): def process_message(self, peer, mailfrom, rcpttos, data): try: diff --git a/requirements.txt b/requirements.txt index 2c350e2..3136afb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,3 @@ Flask==2.0.1 -Flask-SQLAlchemy==2.5.1 -Flask-Mail==0.9.1 redis==3.5.3 -mysqlclient==2.0.3 -SQLAlchemy==1.4.23 \ No newline at end of file +Flask-Mail==0.9.1 \ No newline at end of file diff --git a/run.py b/run.py index 1963c32..6e5c657 100644 --- a/run.py +++ b/run.py @@ -1,17 +1,25 @@ import threading +import argparse from app import create_app from app.utils import start_smtp_server app = create_app() -def run_smtp_server(): - start_smtp_server(host='0.0.0.0', port=25) +def run_smtp_server(host, port): + start_smtp_server(host=host, port=port) if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Email System Server') + parser.add_argument('--host', default='0.0.0.0', help='Host to bind') + parser.add_argument('--port', type=int, default=5000, help='Port for web server') + parser.add_argument('--smtp-port', type=int, default=25, help='Port for SMTP server') + + args = parser.parse_args() + # 在单独的线程中启动 SMTP 服务器 - smtp_thread = threading.Thread(target=run_smtp_server) + smtp_thread = threading.Thread(target=run_smtp_server, args=(args.host, args.smtp_port)) smtp_thread.daemon = True smtp_thread.start() # 启动 Flask 应用 - app.run(host='0.0.0.0', port=5000, debug=True) \ No newline at end of file + app.run(host=args.host, port=args.port) \ No newline at end of file