1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Kanmail

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 16 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 19:41 b3d1d71

Kanmail

Привет 👋, меня зовут Ник, и я создаю и поддерживаю Kanmail. Жизнь сейчас очень занята из-за маленькой семьи, поэтому развитие Kanmail нерегулярно. Я использую Kanmail каждый день и буду продолжать исправлять ошибки, улучшать производительность и создавать новые функции.

Электронная почта в виде доски Kanban для macOS, Windows и Docker. Скачайте последнюю версию здесь.

  • Поддерживает macOS, Windows и Docker (см. вопрос о поддержке Linux)
  • Разработан с использованием Gmail, Outlook и Fastmail
  • Должен быть совместим с другими провайдерами электронной почты (использует IMAP/SMTP)
  • Находится в стадии бета-тестирования — используется как основной клиент электронной почты более года

Оставшаяся часть этого файла README посвящена техническим деталям Kanmail. Для пользовательской документации перейдите на сайт Kanmail.

Лицензия

Перед продолжением важно отметить, что Kanmail является открытым исходным кодом, но не свободным. Kanmail доступен бесплатно для ознакомления; для постоянного использования Kanmail следует приобрести лицензию.Мы приветствуем pull requests, однако обратите внимание, что вы будете участвовать в проекте, который не является свободным. Вам потребуется подписать CLA Oxygem перед тем, как ваши изменения будут приняты. Мы предлагаем бесплатные ключи лицензий для участников; пожалуйста, отправьте электронное письмо на hello@oxygem.com для получения дополнительной информации.+ Лицензия

Разработка

Настройка системы

macOS

Python обязательно должен быть настроен --with-framework. Убедитесь, что это настроено правильно, прочитав этот ответ на StackOverflow.

Для сборки/выпуска вам потребуется установить GNU tar, что можно сделать через brew:

brew install gnu-tar

Windows

Необходимо установить Visual Studio build tools.

Linux (Ubuntu)

Для правильной установки gtk потребуются следующие пакеты:

apt install build-essential pkg-config git python3-dev libcairo2-dev libgirepository1.0-dev

Установка зависимостей

Python

Kanmail требует Python 3.9 и использует poetry для управления зависимостями. Установите с помощью команды:

poetry install

JavaScript

Установите зависимости на JavaScript с помощью yarn:

yarn install

Запуск приложения

Запуск как сервера

Чтобы запустить сервер + webpack-server выполните команду:

honcho start

Затем перейдите по адресу http://localhost:4420 для просмотра/разработки приложения в вашем браузере выбора.#### Запуск как приложения

Чтобы запустить полноценное графическое приложение, выполните команду:

honcho start -f Procfile-app

Обратите внимание, что веб-сервер не автоматически перезагружается при работе в режиме приложения.

Версии

Номера версий генерируются во время сборки в датном формате: MAJOR.YYYYMMDDHHMM.

Сборка

Согласно документации PyInstaller, для максимальной совместимости Kanmail лучше всего собирать на самых старых доступных системах. MacOS и Linux сборки поддерживают более новые версии, но не поддерживают более ранние.

Kanmail собирается на следующих системах:

  • MacOS 10.15 (используется SDK 10.10), совместим с 10.10+
  • Ubuntu 18 64-bit, совместим с libc6 2.27+
  • Windows 10 64-bit, совместим с ?

Окружения сборки

MacOS

Рекомендуется использовать самую старую возможную версию SDK. Kanmail будет совместим с версией SDK любой более новой версии системы, но не будет совместим ни с одной более ранней версией, поэтому целевой SDK следует выбирать самый старый реалистичный вариант, который в настоящее время составляет 10.10 / Sierra. Основано на этой заметке.

  • Используйте xcodelegacy для загрузки старых файлов SDK OS X
Настройка отдельной среды
export BUILD_ENV_PREFIX=/opt/osx10.10-env

export PATH="$BUILD_ENV_PREFIX/Frameworks/Python.framework/Versions/Current/bin:$BUILD_ENV_PREFIX/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin"
``````md
export MACOSXSDK=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
--- Исходный текст ---
+++ Переведенный текст ++++

```diff
--- Исходный текст ---
+++ Переведенный текст +++

```sh
export MACOSX_DEPLOYMENT_TARGET="10.10"

export CFLAGS="-isysroot $MACOSXSDK -I$MACOSXSDK/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I$BUILD_ENV_PREFIX/include"
export LDFLAGS="-isysroot $MACOSXSDK -L$BUILD_ENV_PREFIX/lib"
export LD_LIBRARY_PATH="$BUILD_ENV_PREFIX/lib/"
export CXXFLAGS="-isysroot $MACOSXSDK -I$BUILD_ENV_PREFIX/include"
export CPPFLAGS="-I$MACOSXSDK/usr/include -I$BUILD_ENV_PREFIX/include -I$BUILD_ENV_PREFIX/include/openssl"
OpenSSL

Скачайте и распакуйте openssl-1.0.2u. На amd64 Mac: добавьте префикс arch -x86_64 перед этими командами.

./Configure --prefix=$BUILD_ENV_PREFIX \
    no-hw no-hw-xxx no-ssl2 no-ssl3 no-zlib zlib-dynamic \
    shared enable-cms darwin64-x86_64-cc enable-ec_nistp_64_gcc_128 \
    -isysroot$MACOSXSDK \
    -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET
make depend
make
make install
Python

Скачайте и распакуйте Python. На amd64 Mac: добавьте префикс arch -x86_64 перед этими командами.

./configure --prefix=$BUILD_ENV_PREFIX/ \
    --enable-ipv6 \
    --enable-framework=$BUILD_ENV_PREFIX/Frameworks/ \
    --with-openssl=$BUILD_ENV_PREFIX \
    MACOSX_DEPLOYMENT_TARGET="$MACOSX_DEPLOYMENT_TARGET"
make
make install PYTHONAPPSDIR=$BUILD_ENV_PREFIX/Applications

# Удаление лишних файлов
cd $BUILD_ENV_PREFIX/Frameworks/Python.framework/Versions/Current/bin
ln -s python3 python
ln -s pip3 pip

Наконец установите зависимости (из исходников, без бинарников):

pip install pip -U
pip install -r requirements/macos.txt

Использование этой среды должна обеспечивать сборку приложений совместимых с MacOS 10.10+. Это можно проверить путём установки виртуальной машины MacOS 10.13.


Должна использовать самую старую версию libc, доступную. В настоящее время используется Ubuntu 18, которая имеет libc6 2.27, что довольно ново.

Планируется добавление инструкций по сборке на более ранней версии libc.

#### Windows

В настоящее время сборка осуществляется на Windows 10. Незначительно не уверена, совместима ли она с предыдущими версиями.

### Выполнение сборки

Сборка Kanmail должна быть простой задачей, выполняемой командой `python -m make`.


## Синхронизация

Kanmail использует протокол IMAP для синхронизации электронной почты. Вместо реализации "полной системы синхронизации" (которая пытается поддерживать локальную копию данных сервера), Kanmail использует кэш и загружает данные по мере необходимости. Это упрощает реализацию, но затрудняет работу как полноценного клиентского приложения в офлайн режиме.
```Kanmail синхронизируется с удалённым сервером путём проверки списков UID. Эти списки кэшируются локально, а при каждом "синхронизации" полный список обновляется, обеспечивая актуальность локальной копии в соответствии со списком UID сервера. Заголовки электронной почты кэшируются вместе с их UID.```На данный момент фактические полные данные электронной почты не кэшируются; кэшируются только заголовки. Это означает, что когда устройство находится в офлайн-режиме, Kanmail будет загружать любые кэшированные сообщения в представление колонок, но не сможет открыть ни одного из этих сообщений.### Изначальная загрузка (получение электронных писем)

Когда Kanmail запускается, пользовательский интерфейс пытается получить электронные письма для каждой папки (как для колонок, так и для "основных" папок, таких как архив/черновики). Этот конечный пункт API всегда ожидается вернуть действительный ответ, даже если он пустой, и не требует подключения к интернету. Если есть локальный кэш UID и заголовков электронной почты, эти данные будут возвращены.

При последующих вызовах этого конечного пункта API будут загружаться более новые электронные письма, загружая заголовки с сервера по мере необходимости.

### Обновления (синхронизация электронных писем)

В течение жизненного цикла работы приложения Kanmail периодически запрашивает синхронизацию электронных писем с сервером. В это время полный список UID перезагружается с сервера (неудачно, если устройство находится в офлайн-режиме), и любые новые заголовки электронной почты загружаются. Этот конечный пункт API возвращает новые электронные письма и UID удалённых электронных писем из списка UID.


## Пользовательский интерфейс

Пользовательский интерфейс Kanmail состоит из коллекции приложений на основе React, одно на каждую категорию окна.

### EmailsApp

Основное окно Kanmail, включающее представление колонок и потока электронной почты. Здесь находятся все интересные вещи!#### Представление колонок / потоков

Представление колонок может быть затратным, поэтому Kanmail использует несколько "фишек", чтобы уменьшить количество необходимых представлений. Например, при перемещении или удалении потока, он скрывается от пользователя, но базовый компонент остается на месте. Только сам компонент потока обновляется, а окружающая колонка не перерисовывается.

#### Навигация клавишами

Kanmail поддерживает навигацию между потоками _и_ между колонками с помощью клавиш. Для достижения этого каждый компонент потока содержит ссылку для доступа к компоненту выше/ниже (потоки в одной колонке) и также соседним колонкам слева/справа. Это достигается с использованием ссылок React.

### SendApp

Окно отправки/ответа/пересылки электронной почты и редактор.

### SettingsApp

Окно настроек. Обрабатывает управление аккаунтами и также общие настройки приложения.

### Окно контактов

Окно контактов. Обрабатывает API для добавления/удаления/изменения контактов.

### Окно лицензий

Окно лицензий. Добавляет/удаляет ключ лицензии.

### Окно метаданных

Окно с информацией о приложении, включающее данные о лицензии.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-Kanmail.git
git@api.gitlife.ru:oschina-mirror/mirrors-Kanmail.git
oschina-mirror
mirrors-Kanmail
mirrors-Kanmail
main