Skip to content

Система управления электронной почтой через протокол IMAP. Получение, хранение, категоризация писем. FastAPI + SQLAlchemy + SQLite.

License

Notifications You must be signed in to change notification settings

Nicemice13/Sort_emails

Repository files navigation

📧 Email Sorter — Система управления и сортировки электронной почты

Status Python 3.10+ FastAPI SQLAlchemy License MIT

Backend-сервис для автоматического получения, хранения и категоризации электронной почты с почтовых ящиков через протокол IMAP. Работа с внешними сервисами, реляционной базой данных и веб-интерфейсом в одном приложении.


🎯 Описание проекта

Система управления электронной почтой, которая автоматизирует процесс получения, хранения и организации писем из почтовых ящиков mail.ru.

Ключевые возможности

  • Получение писем через протокол IMAP — работа с почтовыми серверами на сетевом уровне
  • Хранение в реляционной базе данных — структурированное хранение писем, вложений, категорий
  • Категоризация и фильтрация — гибкая система тегов и меток для организации корреспонденции
  • Поиск и статистика — аналитика по письмам, отправителям, временным периодам
  • Веб-интерфейс — удобный доступ к почте через браузер
  • Многопользовательская архитектура — поддержка нескольких почтовых ящиков

🧱 Архитектура проекта

┌─────────────────────────────────────────────────────────────┐ │ Пользователь │ └───────────────────────┬─────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ FastAPI (Backend) │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │ │ │ IMAP Client │ │ API Routes │ │ Jinja2 Templates│ │ │ │ (mail.ru) │ │ (/emails, │ │ (HTML Pages) │ │ │ └──────┬───────┘ │ /stats, │ └────────┬─────────┘ │ │ │ │ /categories)│ │ │ │ ▼ └──────┬───────┘ │ │ │ ┌──────────────┐ │ │ │ │ │ Email Parser│◄────────┼───────────────────┘ │ │ │ (MIME, Body)│ │ │ │ └──────┬───────┘ │ │ │ │ │ │ └─────────┼─────────────────┼────────────────────────────────┘ │ │ ▼ ▼ ┌─────────────────────────────────────────────────────────────┐ │ SQLAlchemy ORM Layer │ │ ┌─────────────┐ ┌─────────────┐ ┌────────────────────┐ │ │ │ Emails │ │Attachments │ │ Categories │ │ │ │ Model │ │ Model │ │ Model │ │ │ └──────┬──────┘ └──────┬──────┘ └──────────┬─────────┘ │ │ │ │ │ │ │ └────────────────┴────────────────────┘ │ └──────────────────────────┬─────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ SQLite Database │ │ emails ── attachments ── categories ── email_categories │ └─────────────────────────────────────────────────────────────┘

Структура базы данных

Таблица Описание Ключевые поля
emails Основная таблица писем id, email_id, subject, sender, date, body, is_processed
attachments Вложения писем id, email_id, filename, content_type, data
categories Категории для сортировки id, name, description
email_categories Связь многие-ко-многим email_id, category_id

💼 Бизнес-ценность

Проблема

Ручное управление электронной почтой требует значительных временных затрат:

  • Скачивание и сохранение важных писем
  • Организация корреспонденции по категориям
  • Поиск информации в архиве писем

Решение

Автоматизированная система управления почтой:

  • Экономия времени: Автоматическое получение и сохранение писем
  • Организация данных: Структурированное хранение с возможностью категоризации
  • Удобный доступ: Веб-интерфейс для просмотра и поиска
  • Масштабируемость: Поддержка нескольких почтовых ящиков

Метрики эффективности

Метрика Значение
Время получения 100 писем ~15-20 секунд
Объём данных на 1000 писем ~50-100 МБ (в зависимости от вложений)
Поддерживаемые форматы MIME, текст, HTML, вложения
Совместимость mail.ru (IMAP), расширяемо для других провайдеров

🛠️ Технический стек

Слой Технология Версия Назначение
Язык Python 3.10+ Основной язык разработки
Web Framework FastAPI 0.104.1 Создание веб-API и сервера
ASGI Server uvicorn 0.24.0 Запуск асинхронного приложения
ORM SQLAlchemy 2.0.23 Работа с реляционной базой данных
Валидация Pydantic 2.4.2 Валидация данных и сериализация
База данных SQLite Локальное хранение данных
Протокол IMAP Получение почты с сервера mail.ru
Шаблонизатор Jinja2 Рендеринг веб-страниц
Конфигурация python-dotenv Управление переменными окружения

📊 Текущий прогресс

Функция Статус Описание
Получение писем через IMAP ✅ Реализовано Подключение к mail.ru, скачивание писем
Парсинг писем (MIME) ✅ Реализовано Извлечение темы, отправителя, тела, вложений
База данных SQLite ✅ Реализовано Таблицы для писем, вложений, категорий
ORM (SQLAlchemy) ✅ Реализовано Модели данных и отношения
FastAPI сервер ✅ Реализовано Веб-сервер с роутингом
Веб-интерфейс (шаблоны) ✅ Реализовано Страницы: главная, детали письма, категории, статистика
Категоризация писем ✅ Реализовано Связь многие-ко-многим, теги
Поиск по письмам 🟡 В разработке Фильтрация по отправителю, теме, дате
Статистика 🟡 В разработке Аналитика по корреспонденции
Поддержка нескольких ящиков ⬜ Планируется Расширение для нескольких аккаунтов

🚀 Быстрый старт

Требования

  • Python 3.10 или выше
  • Учётная запись mail.ru с включённым IMAP
  • Специальный пароль приложения (не основной пароль)

Инструкция

# 1. Клонировать репозиторий
git clone https://github.com/Nicemice13/Sort_emails.git
cd Sort_emails

# 2. Активировать виртуальное окружение
python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate   # Windows

# 3. Установить зависимости
pip install -r requirements.txt

# 4. Создать файл .env с учётными данными
# Создайте файл .env в корне проекта:
cat > .env << EOF
EMAIL_RU=ваш_email@mail.ru
PASSWORD_RU=ваш_пароль_приложения
EOF

# 5. Создать базу данных
python create_database.py

# 6. Получить письма с почтового ящика
python mail_to_json.py

# 7. Запустить веб-сервер
uvicorn test1:app --reload

# 8. Открыть в браузере
# http://localhost:8000
Настройка почтового ящика mail.ru
Войдите в аккаунт на mail.ru
Перейдите в Настройки → Почтовые программы
Включите Протокол IMAP
Создайте Пароль для почтовых программ
Скопируйте пароль в файл .env

📚 Используемые ресурсы
FastAPI Documentation: https://fastapi.tiangolo.com
SQLAlchemy Documentation: https://docs.sqlalchemy.org
IMAP Protocol: https://datatracker.ietf.org/doc/html/rfc3501
Mail.ru IMAP Settings: https://help.mail.ru/mail-help/imap

📝 Лицензия
Проект распространяется под лицензией MIT.

About

Система управления электронной почтой через протокол IMAP. Получение, хранение, категоризация писем. FastAPI + SQLAlchemy + SQLite.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published