Привет 👋, меня зовут Ник, и я создаю и поддерживаю Kanmail. Жизнь сейчас очень занята из-за маленькой семьи, поэтому развитие Kanmail нерегулярно. Я использую Kanmail каждый день и буду продолжать исправлять ошибки, улучшать производительность и создавать новые функции.
Электронная почта в виде доски Kanban для macOS, Windows и Docker. Скачайте последнюю версию здесь.
Оставшаяся часть этого файла README посвящена техническим деталям Kanmail. Для пользовательской документации перейдите на сайт Kanmail.
Перед продолжением важно отметить, что Kanmail является открытым исходным кодом, но не свободным. Kanmail доступен бесплатно для ознакомления; для постоянного использования Kanmail следует приобрести лицензию.Мы приветствуем pull requests, однако обратите внимание, что вы будете участвовать в проекте, который не является свободным. Вам потребуется подписать CLA Oxygem перед тем, как ваши изменения будут приняты. Мы предлагаем бесплатные ключи лицензий для участников; пожалуйста, отправьте электронное письмо на hello@oxygem.com для получения дополнительной информации.+ Лицензия
Python обязательно должен быть настроен --with-framework
. Убедитесь, что это настроено правильно, прочитав этот ответ на StackOverflow.
Для сборки/выпуска вам потребуется установить GNU tar, что можно сделать через brew:
brew install gnu-tar
Необходимо установить Visual Studio build tools.
Для правильной установки gtk
потребуются следующие пакеты:
apt install build-essential pkg-config git python3-dev libcairo2-dev libgirepository1.0-dev
Kanmail требует Python 3.9
и использует poetry
для управления зависимостями. Установите с помощью команды:
poetry install
Установите зависимости на JavaScript с помощью yarn
:
yarn install
Чтобы запустить сервер + webpack-server выполните команду:
honcho start
Затем перейдите по адресу http://localhost:4420 для просмотра/разработки приложения в вашем браузере выбора.#### Запуск как приложения
Чтобы запустить полноценное графическое приложение, выполните команду:
honcho start -f Procfile-app
Обратите внимание, что веб-сервер не автоматически перезагружается при работе в режиме приложения.
Номера версий генерируются во время сборки в датном формате: MAJOR.YYYYMMDDHHMM
.
Согласно документации PyInstaller, для максимальной совместимости Kanmail лучше всего собирать на самых старых доступных системах. MacOS и Linux сборки поддерживают более новые версии, но не поддерживают более ранние.
Kanmail собирается на следующих системах:
Рекомендуется использовать самую старую возможную версию SDK. Kanmail будет совместим с версией SDK любой более новой версии системы, но не будет совместим ни с одной более ранней версией, поэтому целевой SDK следует выбирать самый старый реалистичный вариант, который в настоящее время составляет 10.10 / Sierra. Основано на этой заметке.
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-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. На 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 )