29.01.2024 я решил кардинально переосмыслить данный проект и сделать новую версию, исправив недочеты Lesst. Этот репозиторий станет архивом. Если Вас заинтересовал проект, Вам стоит посмотреть новую версию: https://github.com/realkarych/postamt
Lesst — less than Email client
Полноценный почтовый клиент в Telegram. На базе Telegram BotAPI и Форумов (реализации "тем" / "тредов" в Telegram).
-
Пользователь может подключить до пяти почтовых ящиков (Yandex, Gmail, MailRu). К каждому ящику создается форум для получения и отправки Email-ов.
-
Все вложения к письмам присылаются в качестве файлов прямо в Telegram.
-
Все входящие письма сортируются по Email-адресам. Таким образом, пользователь получает все письма (включая спам), но может отключать уведомления / блокировать письма от конкретного Email-адреса. Благодаря этому, важное письмо не затеряется в "Спаме" и не будет обработано почтовым автофильтром.
-
Сразу после подключения ящика, бот подгружает последние письма и сортирует их. Таким образом, пользователь может искать контент по последним письмам сразу после начала работы с ботом. Это аналог полноценного импорта в других почтовых клиентах.
-
После настройки и первичного анализа почты, каждый входящий Email будет приходить в чат моментально. Пользователю приходит стандартное уведомление в Telegram.
- Python3.11
- Poetry — менеджер зависимостей.
- Aiogram — асинхронный фреймворк для работы с Telegram BotAPI.
- Nats — реализация доставки сообщений.
- Mozilla ProjectFluent — система локализации. Бот работает на английском и русском языках.
- PostgreSQL (реляционная бд) + SQLalchemy (ORM) + asyncpg (коннектор) + alembic (миграции)
- Набор инструментов для асинхронной подгрузки Email-ов по IMAP и отправки по SMTP.
- Для шифрования при хранении пользовательских данных используются KDF, message digests, symmetric ciphers. Библиотека: https://pypi.org/project/cryptography/.
- APScheduler — аналог crontab — управление регулярными процессами.
- Systemd — запуск приложения на сервере. Можно заменить Docker-ом.
- Полный перечень использованных инструментов можно посмотреть в зависимостях проекта.