from django.core.mail import EmailMultiAlternatives
from django.template.loader import render_to_string
from email.mime.image import MIMEImage
from django.conf import settings
import os


def sending_email(subject, otp_code, from_email, recipient_list, fail_silently=False):
    """Utility function to send an email using Django's send_mail function."""

    context = {
        "otp_code": otp_code,
        "validity_time": 2,
    }

    html_content = render_to_string(
        "mail/user_otp_mail.html",
        context
    )

    msg = EmailMultiAlternatives(
        subject=subject,
        body="OTP Email",
        from_email=from_email,
        to=recipient_list,
    )

    msg.attach_alternative(html_content, "text/html")

    image_path = os.path.join(
        settings.BASE_DIR,
        "staticfiles",
        "images",
        "evchargy-logo.png"
    )

    with open(image_path, "rb") as f:
        image = MIMEImage(f.read())
        image.add_header("Content-ID", "<evchargy_logo>")
        image.add_header("Content-Disposition", "inline", filename="evchargy-logo.png")
        msg.attach(image)

    try:
        msg.send(fail_silently=fail_silently)
    except Exception as e:
        raise Exception(f"Email sending failed: {str(e)}")