from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

import aiosmtplib

from app.config import settings
from common_logging import get_logger

logger = get_logger(__name__)


async def send_email(to_email: str, subject: str, html_content: str) -> bool:
    try:
        message = MIMEMultipart("alternative")
        message["Subject"] = subject
        message["From"] = f"{settings.SMTP_FROM_NAME} <{settings.SMTP_FROM}>"
        message["To"] = to_email
        html_part = MIMEText(html_content, "html")
        message.attach(html_part)
        await aiosmtplib.send(
            message,
            hostname=settings.SMTP_HOST,
            port=settings.SMTP_PORT,
            username=settings.SMTP_USER,
            password=settings.SMTP_PASSWORD,
            start_tls=True,
        )
        logger.info(f"Email sent successfully to {to_email}")
        return True
    except Exception as e:
        logger.error(f"Failed to send email to {to_email}: {str(e)}")
        return False


async def send_verification_email(email: str, token: str, name: str) -> bool:
    verification_url = f"{settings.FRONTEND_URL}/verify-email?token={token}"
    html_content = f'\n    <!DOCTYPE html>\n    <html>\n    <head>\n        <meta charset="utf-8">\n        <style>\n            body {{\n                font-family: Arial, sans-serif;\n                line-height: 1.6;\n                color: #333;\n            }}\n            .container {{\n                max-width: 600px;\n                margin: 0 auto;\n                padding: 20px;\n            }}\n            .header {{\n                background-color: #4CAF50;\n                color: white;\n                padding: 20px;\n                text-align: center;\n                border-radius: 5px 5px 0 0;\n            }}\n            .content {{\n                background-color: #f9f9f9;\n                padding: 30px;\n                border-radius: 0 0 5px 5px;\n            }}\n            .button {{\n                display: inline-block;\n                padding: 12px 30px;\n                background-color: #4CAF50;\n                color: white;\n                text-decoration: none;\n                border-radius: 5px;\n                margin: 20px 0;\n            }}\n            .footer {{\n                text-align: center;\n                margin-top: 20px;\n                color: #666;\n                font-size: 12px;\n            }}\n        </style>\n    </head>\n    <body>\n        <div class="container">\n            <div class="header">\n                <h1>欢迎加入 HelloTax AI</h1>\n            </div>\n            <div class="content">\n                <p>你好 {name},</p>\n                <p>感谢您注册 HelloTax AI！请点击下面的按钮验证您的邮箱地址：</p>\n                <div style="text-align: center;">\n                    <a href="{verification_url}" class="button">验证邮箱</a>\n                </div>\n                <p>或者复制以下链接到浏览器：</p>\n                <p style="word-break: break-all; color: #666;">{verification_url}</p>\n                <p>此链接将在24小时后过期。</p>\n                <p>如果您没有注册账户，请忽略此邮件。</p>\n            </div>\n            <div class="footer">\n                <p>&copy; 2026 HelloTax AI. All rights reserved.</p>\n            </div>\n        </div>\n    </body>\n    </html>\n    '
    return await send_email(
        to_email=email, subject="验证您的邮箱 - HelloTax AI", html_content=html_content
    )
