"""
Test d'envoi d'email depuis le terminal (cPanel, SSH, etc.).
Usage :
  python manage.py send_test_email
  python manage.py send_test_email to@example.com
"""
from django.core.management.base import BaseCommand
from django.core.mail import send_mail
from django.conf import settings


def _get_skip_verify():
    from goon_backend.smtp_backend import _email_ssl_skip_verify
    return _email_ssl_skip_verify()


class Command(BaseCommand):
    help = "Envoie un email de test pour vérifier la config SMTP (prod/local)."

    def add_arguments(self, parser):
        parser.add_argument(
            "email",
            nargs="?",
            default="",
            help="Adresse email destinataire (optionnel, utilise DEFAULT_FROM_EMAIL si vide)",
        )

    def handle(self, *args, **options):
        to_email = (options.get("email") or "").strip()
        if not to_email:
            to_email = getattr(settings, "EMAIL_HOST_USER", "") or getattr(settings, "DEFAULT_FROM_EMAIL", "")
        if not to_email:
            self.stderr.write(self.style.ERROR("Indiquez une adresse : python manage.py send_test_email to@example.com"))
            return

        host = getattr(settings, "EMAIL_HOST", "")
        port = getattr(settings, "EMAIL_PORT", "")
        user = getattr(settings, "EMAIL_HOST_USER", "")
        backend = getattr(settings, "EMAIL_BACKEND", "")

        skip_verify = _get_skip_verify()
        self.stdout.write("Config actuelle :")
        self.stdout.write(f"  EMAIL_BACKEND        = {backend}")
        self.stdout.write(f"  EMAIL_HOST           = {host}")
        self.stdout.write(f"  EMAIL_PORT           = {port}")
        self.stdout.write(f"  EMAIL_HOST_USER      = {user}")
        self.stdout.write(f"  EMAIL_SSL_SKIP_VERIFY= {skip_verify}")
        self.stdout.write(f"  Envoi vers           = {to_email}")
        if not skip_verify:
            self.stdout.write(self.style.WARNING("  (Si erreur SSL en prod : Admin Django > Réglages > ajouter clé EMAIL_SSL_SKIP_VERIFY, valeur 1)"))
        self.stdout.write("")

        try:
            send_mail(
                subject="[GOON] Test email",
                message="Ceci est un test d'envoi depuis le serveur GOON. Si vous recevez ce message, la config SMTP est correcte.",
                from_email=settings.EMAIL_HOST_USER,
                recipient_list=[to_email],
                fail_silently=False,
            )
            self.stdout.write(self.style.SUCCESS(f"OK : email envoyé vers {to_email}"))
        except Exception as e:
            self.stderr.write(self.style.ERROR(f"ERREUR : {e}"))
            import traceback
            self.stderr.write(traceback.format_exc())
