Игорь Надеин 48631f43fd Реорганизация документации и скриптов проекта
- Создана структура docs/ с категориями: completed, guides, architecture, diagnostic, in-progress, reports
- Перемещено 47+ MD файлов из корня проекта в docs/
- Удалено 6 устаревших/дублирующихся файлов
- Создана структура backend/scripts/ для тестов и утилит
- Перемещено 35 Python скриптов в backend/scripts/
- Создана структура backend/docs/ для технической документации
- Перемещено 12 MD файлов backend в backend/docs/
- Перемещены LDAP тестовые данные в backend/tests/fixtures/
- Добавлены README файлы для навигации
- Добавлены правила в .github/copilot-instructions.md для размещения документации

Результат:
- Корень проекта: только README.md
- Корень backend/: только manage.py и Django приложения
- Вся документация организована в структурированные папки
2025-12-26 13:49:51 +03:00

115 lines
4.0 KiB
Python

#!/usr/bin/env python3
"""
Тестовый скрипт для проверки отправки email через SMTP Яндекса
"""
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Настройки из .env
EMAIL_HOST = "smtp.yandex.ru"
EMAIL_PORT = 465
EMAIL_USE_SSL = True
EMAIL_HOST_USER = "robotail-info@yandex.ru"
EMAIL_HOST_PASSWORD = "wogrpijpzbtiuptx"
DEFAULT_FROM_EMAIL = "Robotail <robotail-info@yandex.ru>"
# Получатель
TO_EMAIL = "igor_26reg@mail.ru"
def test_email():
print("=" * 50)
print("Тест отправки email через Яндекс SMTP")
print("=" * 50)
print(f"Хост: {EMAIL_HOST}:{EMAIL_PORT}")
print(f"От кого: {EMAIL_HOST_USER}")
print(f"Кому: {TO_EMAIL}")
print(f"SSL: {EMAIL_USE_SSL}")
print()
# Создаем сообщение
msg = MIMEMultipart('alternative')
msg['Subject'] = "Тестовое письмо - проверка SMTP"
msg['From'] = DEFAULT_FROM_EMAIL
msg['To'] = TO_EMAIL
# Текст письма
text = "Это тестовое письмо для проверки настроек SMTP."
html = """
<html>
<head></head>
<body>
<h2>Тестовое письмо</h2>
<p>Это тестовое письмо для проверки настроек SMTP Яндекса.</p>
<p>Если вы получили это письмо, значит настройки корректны.</p>
</body>
</html>
"""
part1 = MIMEText(text, 'plain', 'utf-8')
part2 = MIMEText(html, 'html', 'utf-8')
msg.attach(part1)
msg.attach(part2)
try:
print("Подключение к SMTP серверу...")
if EMAIL_USE_SSL:
server = smtplib.SMTP_SSL(EMAIL_HOST, EMAIL_PORT, timeout=10)
else:
server = smtplib.SMTP(EMAIL_HOST, EMAIL_PORT, timeout=10)
server.starttls()
print("✓ Подключение установлено")
print("Авторизация...")
server.login(EMAIL_HOST_USER, EMAIL_HOST_PASSWORD)
print("✓ Авторизация успешна")
print("Отправка письма...")
server.send_message(msg)
print("✓ Письмо отправлено!")
server.quit()
print()
print("=" * 50)
print("SUCCESS! Письмо успешно отправлено на", TO_EMAIL)
print("=" * 50)
except smtplib.SMTPAuthenticationError as e:
print()
print("=" * 50)
print("ОШИБКА АВТОРИЗАЦИИ!")
print("=" * 50)
print(f"Код ошибки: {e.smtp_code}")
print(f"Сообщение: {e.smtp_error.decode('utf-8')}")
print()
print("Возможные причины:")
print("1. Неверный пароль приложения")
print("2. Доступ заблокирован для данного IP-адреса")
print("3. Необходимо создать новый пароль приложения в настройках Яндекса")
print()
print("Решение:")
print("1. Зайдите на https://passport.yandex.ru/profile")
print("2. Перейдите в раздел 'Пароли и авторизация'")
print("3. Создайте новый пароль приложения")
print("4. Обновите EMAIL_HOST_PASSWORD в .env файле")
except smtplib.SMTPException as e:
print()
print("=" * 50)
print("ОШИБКА SMTP!")
print("=" * 50)
print(f"Ошибка: {e}")
except Exception as e:
print()
print("=" * 50)
print("ОБЩАЯ ОШИБКА!")
print("=" * 50)
print(f"Ошибка: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
test_email()