Files
eamilsystemv2torn3u/app/__init__.py
huangzhenpc 8855475bbb xf
2025-03-05 11:11:41 +08:00

76 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from flask import Flask, request, jsonify, render_template
from .config import Config
from .utils import get_latest_emails, get_latest_email_with_code, add_allowed_domain, remove_allowed_domain, get_allowed_domains, get_allowed_domains_with_time
import redis
def create_app():
app = Flask(__name__)
app.config.from_object(Config)
@app.route('/emails', methods=['GET'])
def get_emails():
recipient = request.args.get('recipient')
limit = request.args.get('limit', default=10, type=int)
if not recipient:
return jsonify({'error': 'Recipient email is required'}), 400
emails = get_latest_emails(recipient, limit)
return jsonify(emails)
@app.route('/latest_email', methods=['GET'])
def get_latest_email():
recipient = request.args.get('recipient')
if not recipient:
return jsonify({'error': 'Recipient email is required'}), 400
email_data = get_latest_email_with_code(recipient)
if email_data:
return jsonify(email_data)
return jsonify({'error': 'No emails found for this recipient'}), 404
@app.route('/allowed_domains/add', methods=['POST'])
def add_domain():
domain = request.json.get('domain')
if not domain:
return jsonify({'error': 'Domain is required'}), 400
add_allowed_domain(domain)
return jsonify({'message': 'Domain added successfully'}), 201
@app.route('/allowed_domains/remove', methods=['POST'])
def remove_domain():
domain = request.json.get('domain')
if not domain:
return jsonify({'error': 'Domain is required'}), 400
remove_allowed_domain(domain)
return jsonify({'message': 'Domain removed successfully'}), 200
@app.route('/allowed_domains/list', methods=['GET'])
def list_domains():
domains = get_allowed_domains()
return jsonify(domains), 200
@app.route('/allowed_domains/list_with_time', methods=['GET'])
def list_domains_with_time():
domains_with_time = get_allowed_domains_with_time()
return jsonify(domains_with_time), 200
@app.route('/web/list')
def list_emails_page():
try:
# 不指定 recipient获取所有邮件
emails = get_latest_emails(recipient=None, count=50)
return render_template('email_list.html', emails=emails)
except Exception as e:
app.logger.error(f"Error in list_emails_page: {str(e)}")
return "获取邮件列表失败", 500
@app.route('/web/email/<recipient>')
def view_email_page(recipient):
try:
email = get_latest_email_with_code(recipient)
if email:
return render_template('email_detail.html', email=email)
return "邮件不存在", 404
except Exception as e:
app.logger.error(f"Error in view_email_page: {str(e)}")
return "获取邮件详情失败", 500
return app