"""
Отправка тестового письма для проверки SMTP.
Запуск: python manage.py send_test_email recipient@example.com
Из Docker: docker compose exec web python manage.py send_test_email recipient@example.com
"""
from django.core.management.base import BaseCommand
from django.core.mail import send_mail
from django.conf import settings


class Command(BaseCommand):
    help = 'Отправляет тестовое письмо на указанный адрес для проверки SMTP'

    def add_arguments(self, parser):
        parser.add_argument(
            'email',
            type=str,
            help='Email получателя',
        )

    def handle(self, *args, **options):
        to_email = options['email'].strip()
        self.stdout.write('Текущие настройки почты:')
        self.stdout.write(f'  EMAIL_BACKEND = {getattr(settings, "EMAIL_BACKEND", "?")}')
        self.stdout.write(f'  EMAIL_HOST = {getattr(settings, "EMAIL_HOST", "?")}')
        self.stdout.write(f'  EMAIL_PORT = {getattr(settings, "EMAIL_PORT", "?")}')
        self.stdout.write(f'  EMAIL_USE_TLS = {getattr(settings, "EMAIL_USE_TLS", "?")}')
        self.stdout.write(f'  EMAIL_USE_SSL = {getattr(settings, "EMAIL_USE_SSL", "?")}')
        self.stdout.write(f'  EMAIL_HOST_USER = {getattr(settings, "EMAIL_HOST_USER", "?")}')
        pw = getattr(settings, 'EMAIL_HOST_PASSWORD', '') or ''
        self.stdout.write(f'  EMAIL_HOST_PASSWORD = {"***" if pw else "(пусто)"}')
        self.stdout.write(f'  DEFAULT_FROM_EMAIL = {getattr(settings, "DEFAULT_FROM_EMAIL", "?")}')
        self.stdout.write('')

        try:
            send_mail(
                subject='Тест отправки с платформы',
                message='Если вы получили это письмо, SMTP настроен верно.',
                from_email=settings.DEFAULT_FROM_EMAIL,
                recipient_list=[to_email],
                fail_silently=False,
            )
            self.stdout.write(self.style.SUCCESS(f'Письмо отправлено на {to_email}'))
        except Exception as e:
            self.stdout.write(self.style.ERROR(f'Ошибка: {e}'))
            import traceback
            self.stdout.write(traceback.format_exc())
            self.stdout.write('')
            self.stdout.write(
                'Подсказка: для Mail.ru используйте порт 465 с SSL и пароль приложения '
                '(Настройки → Безопасность → Пароли для внешних приложений).'
            )
