import logging from flask import Blueprint, request, jsonify logger = logging.getLogger('picell') bp = Blueprint('email', __name__) @bp.route('/api/email/users', methods=['GET']) def get_email_users(): """Get email users.""" try: from app import email_manager users = email_manager.get_users() return jsonify(users) except Exception as e: logger.error(f"Error getting email users: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/email/users', methods=['POST']) def create_email_user(): """Create email user.""" try: from app import email_manager, _configured_domain data = request.get_json(silent=True) if data is None: return jsonify({"error": "No data provided"}), 400 username = data.get('username') domain = data.get('domain') or _configured_domain() password = data.get('password') if not username or not password: return jsonify({"error": "Missing required fields: username, password"}), 400 result = email_manager.create_email_user(username, domain, password) return jsonify({"created": result}) except Exception as e: logger.error(f"Error creating email user: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/email/users/', methods=['DELETE']) def delete_email_user(username): """Delete email user.""" try: from app import email_manager, _configured_domain domain = request.args.get('domain') or _configured_domain() result = email_manager.delete_email_user(username, domain) return jsonify({"deleted": result}) except Exception as e: logger.error(f"Error deleting email user: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/email/status', methods=['GET']) def get_email_status(): """Get email service status.""" try: from app import email_manager status = email_manager.get_status() return jsonify(status) except Exception as e: logger.error(f"Error getting email status: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/email/connectivity', methods=['GET']) def test_email_connectivity(): """Test email connectivity.""" try: from app import email_manager result = email_manager.test_connectivity() return jsonify(result) except Exception as e: logger.error(f"Error testing email connectivity: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/email/send', methods=['POST']) def send_email(): try: from app import email_manager data = request.get_json(silent=True) if data is None: return jsonify({"error": "No data provided"}), 400 result = email_manager.send_email(data) return jsonify(result) except Exception as e: logger.error(f"Error sending email: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/email/mailbox/', methods=['GET']) def get_mailbox_info(username): """Get mailbox information.""" try: from app import email_manager result = email_manager.get_mailbox_info(username) return jsonify(result) except Exception as e: logger.error(f"Error getting mailbox info: {e}") return jsonify({"error": str(e)}), 500