"""
Тест SMTP-подключения к Яндекс Почте.
Запуск: python test_smtp.py
"""
import smtplib
import os

# Загружаем .env если есть
try:
    from dotenv import load_dotenv
    load_dotenv()
except ImportError:
    pass

SMTP_SERVER   = os.environ.get('SMTP_SERVER',   'smtp.yandex.ru')
SMTP_PORT     = int(os.environ.get('SMTP_PORT', 587))
SMTP_USER     = os.environ.get('SMTP_USER',     'zratmanov@yandex.ru')
SMTP_PASSWORD = os.environ.get('SMTP_PASSWORD', 'hzxbxlsejgaqbiqh')

print(f"SMTP_SERVER:   {SMTP_SERVER}")
print(f"SMTP_PORT:     {SMTP_PORT}")
print(f"SMTP_USER:     {SMTP_USER}")
print(f"SMTP_PASSWORD: {'*' * len(SMTP_PASSWORD)} ({len(SMTP_PASSWORD)} символов)")
print()

if not SMTP_USER or not SMTP_PASSWORD:
    print("❌ SMTP_USER или SMTP_PASSWORD не заданы!")
    exit(1)

try:
    print(f"Подключение к {SMTP_SERVER}:{SMTP_PORT} ...")
    with smtplib.SMTP(SMTP_SERVER, SMTP_PORT, timeout=10) as server:
        server.set_debuglevel(1)        # подробный лог SMTP-диалога
        server.ehlo()
        server.starttls()
        server.ehlo()
        print("Авторизация ...")
        server.login(SMTP_USER, SMTP_PASSWORD)
        print()
        print("✅ Авторизация успешна! SMTP работает.")
except smtplib.SMTPAuthenticationError as e:
    print(f"\n❌ Ошибка авторизации: {e}")
    print("\nВозможные причины:")
    print("  1. Неверный пароль приложения (не основной пароль аккаунта!)")
    print("  2. Пароль приложения создан не для 'Почты', а для другого сервиса")
    print("  3. Двухфакторная аутентификация не включена (пароли приложений")
    print("     доступны только при включённой 2FA)")
    print("  4. IMAP/SMTP доступ не включён в настройках Яндекс Почты")
    print("     (Настройки → Почтовые программы → Разрешить доступ)")
except Exception as e:
    print(f"\n❌ Ошибка подключения: {e}")
