import ssl
from django.core.mail.backends.smtp import EmailBackend as SMTPBackend
from django.utils.functional import cached_property
from django.conf import settings

class SSLFailableEmailBackend(SMTPBackend):
    """
    Custom SMTP Email Backend that allows bypassing SSL verification.
    This is extremely helpful for cPanel deployments using self-signed certificates.
    Set `EMAIL_SSL_CERT_VERIFY = False` in settings/.env to bypass verification.
    """
    @cached_property
    def ssl_context(self):
        verify = getattr(settings, "EMAIL_SSL_CERT_VERIFY", True)
        if not verify:
            context = ssl.create_default_context()
            context.check_hostname = False
            context.verify_mode = ssl.CERT_NONE
            return context
        return super().ssl_context
