diff --git a/app/__init__.py b/app/__init__.py index 8a6f396..95ed50a 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -6,6 +6,7 @@ from .utils import (get_latest_emails, get_latest_email_with_code, get_all_emails) import redis import json +import logging def create_app(): app = Flask(__name__) @@ -60,6 +61,9 @@ def create_app(): def list_emails_page(): try: emails = get_all_emails(count=50) + # 检查每个邮件的 message_id + for email in emails: + logger.debug(f"Email message_id: {email.get('message_id')}") return render_template('email_list.html', emails=emails) except Exception as e: app.logger.error(f"Error in list_emails_page: {str(e)}") @@ -68,23 +72,36 @@ def create_app(): @app.route('/web/email/') def view_email_page(message_id): try: + logger.debug(f"Accessing email with message_id: {message_id}") + # 直接从 Redis 获取邮件数据 email_key = f"email:{message_id}" + logger.debug(f"Looking up Redis key: {email_key}") + email_data = redis_client.hgetall(email_key) - if email_data: - # 转换字节数据为字符串 - email = {k.decode(): v.decode() for k, v in email_data.items()} - # 解析 JSON 字符串字段 - for field in ['recipients', 'attachments', 'headers', 'peer']: - if field in email: - try: - email[field] = json.loads(email[field]) - except: - pass - return render_template('email_detail.html', email=email) - return "邮件不存在", 404 + if not email_data: + logger.warning(f"No data found for key: {email_key}") + return "邮件不存在", 404 + + logger.debug(f"Found email data with fields: {list(email_data.keys())}") + + # 转换字节数据为字符串 + email = {k.decode(): v.decode() for k, v in email_data.items()} + logger.debug(f"Decoded email data: {email.keys()}") + + # 解析 JSON 字符串字段 + for field in ['recipients', 'attachments', 'headers', 'peer']: + if field in email: + try: + email[field] = json.loads(email[field]) + logger.debug(f"Successfully parsed {field} field") + except Exception as e: + logger.warning(f"Failed to parse {field} field: {str(e)}") + + return render_template('email_detail.html', email=email) + except Exception as e: - app.logger.error(f"Error in view_email_page: {str(e)}") + logger.error(f"Error in view_email_page: {str(e)}", exc_info=True) return "获取邮件详情失败", 500 return app \ No newline at end of file