EmailInterface · Почта как чаты

Android-клиент: несколько ящиков IMAP/SMTP, общая лента переписок в виде мессенджера. Отдельного бэкенда нет — письма ходят напрямую с почтовых серверов. Это приложение в AndroidProjects\eMailInterface, не бот eMailInterface_bot.
Возможности
- Несколько аккаунтов — пресеты Gmail и Яндекс или свой IMAP/SMTP.
- Цвет аккаунта — в общей ленте чатов.
- Лента — переписки со всех ящиков в одном списке.
- Новый чат — выбор ящика-отправителя.
- Синхронизация — входящие из INBOX по всем аккаунтам одной кнопкой (до 40 последних писем на ящик).
- Ответы — plain-text через SMTP, RFC-заголовки треда сохраняются.
- Закрепление, группы, непрочитанные.
- Уведомления — локальные, deep link
emailchat://chat/{conversationId}. - Пароли — только в EncryptedSharedPreferences, не в Room.
Alpha 0.1.0. Нет OAuth, вложений и полноценного HTML; миграции Room разрушающие.
Требования
- Android 8 (API 26) и выше.
- Android Studio, SDK 34, JDK 17.
- Интернет до IMAP/SMTP провайдера.
- Пароль приложения у Gmail/Яндекс (не основной пароль ящика). Значения в документацию не копировать.
Установка и запуск
В корне нужен local.properties с sdk.dir на Android SDK. Файл в git не класть.
.\gradlew.bat assembleDebug
.\gradlew.bat installDebug
Тесты:
.\gradlew.bat test
.\gradlew.bat connectedAndroidTest
Сейчас исходников в app/src/test и androidTest нет, зависимости подключены.
Использование
Добавить ящик
- Запустите приложение. Если аккаунтов нет — сразу экран создания.
- Выберите Gmail, Яндекс или Custom.
- Введите адрес и пароль приложения.
- Gmail: IMAP
imap.gmail.com:993, SMTPsmtp.gmail.com:587. Яндекс:imap.yandex.ru:993,smtp.yandex.ru:587. Custom — хосты вручную. - Сохраните. Приложение проверяет IMAP, затем SMTP.
Переписки
- Общий список чатов — все ящики.
- Откройте чат или создайте новый с выбранного аккаунта.
- «Синхронизация» подтягивает входящие.
- Можно закрепить чат и задать группу.
Не закрывайте приложение во время отправки: статус пишется в delivery_note.
Структура проекта
eMailInterface/
├── app/ # единственный модуль :app
├── gradle/wrapper/
├── doc/
├── README.md
├── build.gradle.kts
└── settings.gradle.kts
Слои, Room и IMAP — в doc/ARCHITECTURE.md.
Технологии
- Kotlin 2 / Java 17, AGP 8.5.2, Gradle 8.7.
- Jetpack Compose + Material 3, Navigation Compose.
- Room 2 — аккаунты, чаты, сообщения (
email_interface.db, schema 3). - Angus Mail — IMAP и SMTP.
- AndroidX Security Crypto — пароли.
- AppGraph — ручной service locator, без Hilt/Koin.
Разрешения
INTERNET, POST_NOTIFICATIONS. Сеть только к указанным IMAP/SMTP. Пароли приложений и содержимое писем на устройство, не в репозиторий.
История изменений
Формат основан на Keep a Changelog, версии следуют versionName Android-приложения.
[Unreleased]
Changed
- README приведён к лицу продукта: заголовок с «·», сценарии, разрешения; убраны бейджи shields.io, плейсхолдеры скриншотов и маркетинговый roadmap.
doc/AI_RULES.md: канонAndroidProjects\eMailInterface, не путать сeMailInterface_bot.
[0.1.0] — 2026-05-28
Added
- Добавлена стартовая документация проекта по стандарту из четырех файлов:
README.md,doc/CHANGELOG.md,doc/ARCHITECTURE.md,doc/AI_RULES.md. - Зафиксировано текущее состояние Android-клиента EmailInterface: мультиаккаунты, чатовый UI, IMAP/SMTP-транспорт, Room-хранилище и локальные уведомления.
- Описаны команды сборки, установки и тестирования через Gradle Wrapper.
Changed
- Корневой
README.mdрасширен из кратких заметок до полноценной точки входа с бейджами, стеком технологий, roadmap и ссылками наdoc/. - Технические сведения о БД, архитектуре и правилах для ИИ вынесены в отдельные документы.
Fixed
- Устранен пробел в навигации по документации: теперь все обязательные документы связаны относительными ссылками.
Technical Notes
- Документация сформирована на основе Gradle-конфигурации и исходников
app/src/main/java/com/emailinterface. - Текущая версия приложения взята из
app/build.gradle.kts:versionName = "0.1.0". - Схема Room описана по entity-классам
MailAccountEntity,ConversationEntity,MessageEntity; фактическая БД имеетversion = 3иexportSchema = false.



