Kanmail - An email client that functions like a kanban board, for Mac/Windows/Docker

Overview

Kanmail

An email client that functions like a kanban board, for Mac/Windows/Docker. Download the latest release here.

  • Works on MacOS, Windows & Docker (see Linux support issue)
  • Developed using Gmail, Outlook & Fastmail
  • Should be compatible with other email providers (uses IMAP/SMTP)
  • Considered in "beta" - used as primary email client for >1yr

The rest of this readme focuses on the technical details of Kanmail. For user documentation see the Kanmail website.

License

Before continuing it is important to note that Kanmail is source available but not free. Kanmail is available for free download for evaluation; for continued use of Kanmail a license should be purchased.

We welcome pull requests, but note you will be contributing to a non-free project. You will be required to sign the Oxygem CLA before any contributions can be merged. We offer free license keys to contributors, please email [email protected] for more information.

Development

Setup your system

MacOS

Python must be configured --with-framework. See this StackOverflow answer to check whether this is enabled.

To build/release you'll need to install GNU tar, which can be done with brew:

brew install gnu-tar

Windows

You'll need the Visual Studio build tools.

Linux (Ubuntu)

For gtk to install properly you'll need:

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

Install requirements

Python

Kanmail requires Python 3.7 and uses pip-tools to manage requirements. There's a wrapper script to handle installing/updating requirements:

python -m make.requirements install [--dev]

JavaScript

Install the JavaScript requirements with yarn:

yarn install

Start the app

Run as a server

To start the server + webpack-server:

honcho start

Then go to http://localhost:4420 to view/develop the app in a browser of your choice.

Run as an app

To start the full windowed app, use:

honcho start -f Procfile-app

Note that the webserver does not auto-reload when running in app mode.

Releases

Version numbers are generated at build in the date-based format: MAJOR.YYMMDDhhmm.

Building

Per the pyinstaller documentation, for maximum compatability Kanmail is ideally built on the oldest systems available. MacOS + Linux builds are forward, but not backward, compatible.

Kanmail is currently built on:

  • MacOS 10.15 (using 10.10 SDK), compatible with 10.10+
  • Ubuntu 18 64 bit, compatible with libc6 2.27+
  • Windows 10 64 bit, compatible with ?

Build environments

MacOS

Should use the oldest SDK possible. Kanmail will be compatible with the SDK version of any newer versions, but nothing older, so target the oldest realistic SDK, which is currently 10.10 / Sierra. Heavily based on this gist.

Setup a separate environment
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"

export MACOSXSDK=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk

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

Download & untar openssl-1.0.2u. On an amd64 Mac: prefix these commands with 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

Download & untar Python. On an amd64 Mac: prefix these commands with 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

# Tidy up
cd $BUILD_ENV_PREFIX/Frameworks/Python.framework/Versions/Current/bin
ln -s python3 python
ln -s pip3 pip

Finally install the requirements (from source, no binaries):

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

Using this environment should now build apps compatible with MacOS 10.10+. This can be tested by installing a MacOS 10.13 VM.

Linux (Ubuntu)

Should use the oldest libc possible. Currently building using Ubuntu 18 which has libc6 2.27, which is pretty recent.

TBC instructions to build on an older libc.

Windows

Currently builds on Windows 10. Unsure if compatible with previous versions.

Doing a build

Building Kanmail should be as simple as running python -m make.

Syncing

Kanmail syncs email using the IMAP protocol. Instead of implementing a "complete sync engine" (one which attempts to keep a local copy of the server data), Kanmail uses a cache and loads data on demand. This simplifies the implementation but makes it hard/impossible to behave as an offline email client.

Kanmail keeps in sync with the remote server by checking UID lists. These are cached locally and every "sync" the full list is refreshed, ensuring the local copy is up to date with the server UID list. Email headers are cached against their UIDs.

Currently no actual full email data is cached, only the headers. Meaning when offline Kanmail will load any cached threads into the column view, but it won't be able to open any of these threads.

Initial load (get emails)

When Kanmail starts, the UI attempts to get emails for each folder (both columns and "core" folders like archive/drafts) - this API endpoint is always expected to return a valid response, even if empty, and does not require connectivity. If there is a local cache of UIDs and email headers, these will be returned.

Subsequent calls to this API endpoint will load more emails, loading headers from the server as required.

Updates (sync emails)

During the lifetime of a running Kanmail app it will periodically request to sync emails with the server. At this time the full UID list is reloaded from the server (failing if offline) and any new email headers are fetched. This endpoint returns new emails and the UIDs of any deleted emails from the UID list.

User Interface

The Kanmail UI consists of a collection of React apps, one per window "category".

EmailsApp

The main Kanmail window, including the column and email thread views. This is where the interesting stuff lives!

Column / thread renders

Rendering columns can be expensive, so Kanmail uses a few "hacks" to reduce the amount of renders required. For example, when archiving or trashing a thread, it's hidden from the user but the underlying component remains in-place. Only the thread component itself updates and the surrounding column does not re-render.

Keyboard navigation

Kanmail supports navigating between threads and between columns using the keyboard. To achieve this every thread component contains a reference to access the component above/below (other threads same column) and also the adjacent columns left/right. This is achieved using React references.

SendApp

The send/reply/forward email window and editor.

SettingsApp

The settings window. Handles account management as well as general application settings.

ContactsApp

The contacts window. Handles add/remove/delete contacts API.

LicenseApp

The license window. Add/remove a license key.

MetaApp

The meta/about window, includes license information.

Comments
  • Cannot add an account to kanmal at all right now

    Cannot add an account to kanmal at all right now

    I've just downloaded the latest windows build. Kanmail starts but now it's not possible to add any account at all. Login data is valid - I've checked with other mail clients, just to make sure.

    Can anyone confirm that this is a problem with the current version?

    Bug Stale 
    opened by nickbe 12
  • Segfault when issuing multiple window commands [GTK]

    Segfault when issuing multiple window commands [GTK]

    Iust got the newest release. When a imported my new account and "Save all settings" it crashed. OS: Ubuntu 18.04.04 WM: i3 Here is the last lines output.

    [INFO] 127.0.0.1 - - [06/May/2020 14:25:36] "PUT /api/settings HTTP/1.1" 200 -
    [INFO] 127.0.0.1 - - [06/May/2020 14:25:36] "GET /?window_id=fa52675f-e2c0-4551-a19e-9cf77e992e1f HTTP/1.1" 200 -
    [INFO] 127.0.0.1 - - [06/May/2020 14:25:36] "GET /close-window?window_id=33fa7290-2d1c-416e-aaf1-17c40b69027e HTTP/1.1" 204 -
    [INFO] 127.0.0.1 - - [06/May/2020 14:25:36] "GET /static/dist/1.2005020754/main.js HTTP/1.1" 200 -
    [INFO] Logged in as [email protected]
    [INFO] 127.0.0.1 - - [06/May/2020 14:25:36] "GET /api/settings HTTP/1.1" 200 -
    [1]    9840 abort (core dumped)  Kanmail
    
    
    Bug Platform: Linux 
    opened by PannenetsF 12
  • Client tried to access nonexistent namespace

    Client tried to access nonexistent namespace

    Hi

    I am using Docker setup on Debian Testing.

    docker run --name kanmail -p 4420:4420 -v /opt/kanmail_docker/data:/root/.config/kanmail/ fizzadar/kanmail:1.2005020754

    I set up a working account. I can get and see the emails but moving betweens lanes is not possible and I get a lot of errors like below.

    020-05-02T18:57:01 CRITICAL [IMAP Account: [email protected]]: IMAP error 2/10: create failed: Client tried to access nonexistent namespace. (Mailbox name should probably be prefixed with: INBOX.) (0.001 + 0.000 secs).
    
    

    And other errors might related

                                                                                                                                                                          
    This error may have been caused by a syntax error in the criteria: ['ALL']                                                                                                                                                   
    Please refer to the documentation for more information about search criteria syntax..                                                                                                                                        
    https://imapclient.readthedocs.io/en/master/#imapclient.IMAPClient.search                                                                                                                     
                                                                                       
    During handling of the above exception, another exception occurred:                                                                                                                                                          
                                                                                                                                                                                                                                 
    Traceback (most recent call last):                                                                                                                                                            
      File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request                                                                                                                            
        rv = self.dispatch_request()                                                                                                                                                                                             
      File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request                                                                                                                                 
        return self.view_functions[rule.endpoint](**req.view_args)                                                                                                                                                               
      File "./kanmail/server/views/email_api.py", line 163, in api_move_account_emails                                                                                                                                           
        move_folder_emails(account, folder, message_uids, new_folder)                                                                                                                                                            
      File "./kanmail/server/mail/__init__.py", line 250, in move_folder_emails                                                                                                                                                  
        _handle_folder_action('move_emails', *args)                                                                                                                                                                              
      File "./kanmail/server/mail/__init__.py", line 246, in _handle_folder_action                                                                                                                                               
        action(message_uids, *args)                                                                                                                                                               
      File "./kanmail/server/mail/folder.py", line 444, in move_emails                                                                                                                            
        new_folder = self.account.ensure_folder_exists(new_folder)                                                
      File "./kanmail/server/mail/account.py", line 92, in ensure_folder_exists                                                                                                                                                  
        folder.get_and_set_email_uids()                                                                           
      File "./kanmail/server/util.py", line 16, in wrapper                                                        
        return func(self, *args, **kwargs)                                                                        
      File "./kanmail/server/mail/folder.py", line 320, in get_and_set_email_uids                                                                                                                                                
        self.email_uids = self.get_email_uids()                                                                   
      File "./kanmail/server/mail/folder.py", line 284, in get_email_uids                                         
        message_uids = connection.search(search_query)                                                            
      File "./kanmail/server/mail/connection.py", line 83, in wrapper                                                                                                                                                            
        self.try_make_imap()                                                                                      
      File "./kanmail/server/mail/connection.py", line 90, in try_make_imap                                       
        self.make_imap()                                                                                          
      File "./kanmail/server/mail/connection.py", line 118, in make_imap                                          
        imap.select_folder(self._selected_folder)                                                                 
      File "/usr/local/lib/python3.6/site-packages/imapclient/imapclient.py", line 681, in select_folder                                                                                                                         
        self._command_and_check('select', self._normalise_folder(folder), readonly)                                                                                                                                              
      File "/usr/local/lib/python3.6/site-packages/imapclient/imapclient.py", line 1539, in _command_and_check                                                                                                                   
        self._checkok(command, typ, data)                                                                         
      File "/usr/local/lib/python3.6/site-packages/imapclient/imapclient.py", line 1545, in _checkok                                                                                                                             
        self._check_resp('OK', command, typ, data)                                                                
      File "/usr/local/lib/python3.6/site-packages/imapclient/imapclient.py", line 1429, in _check_resp                                                                                                                          
        raise exceptions.IMAPClientError("%s failed: %s" % (command, to_unicode(data[0])))                                                                                                                                       
    imaplib.IMAP4.error: select failed: Client tried to access nonexistent namespace. (Mailbox name should probably be prefixed with: INBOX.) (0.001 + 0.000 secs).         
    
    
    
    Bug Sync Stale 
    opened by gerroon 12
  • Any way to bypass the

    Any way to bypass the "certificate mismatch" issue?

    In one of my mail boxes I have this "certificate mismatch" error when trying to add it to Kanmail:

    [Errno 1] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'imap.servername.lt'. (_ssl.c:1076)

    I think the issue stems from the fact that my folder is "imap.servername.lt", while the certificate is for "servername.lt", but I am not sure since my knowledge about how email servers work is quite limited.

    But what I do know is that I can bypass this issue in i.e. mutt by adding the following setting to the configuration: unset ssl_verify_host.

    Is there some way to bypass this issue in Kanmail?

    Bug 
    opened by karoliskoncevicius 12
  • `Failed to execute script pyi_rth_certifi` when start

    `Failed to execute script pyi_rth_certifi` when start

    kanmail: v1.2004231151 mac: 10.13.6 when start kanmail

    Kanmail.app/Contents/MacOS/Kanmail
    

    an error occurs

    Traceback (most recent call last):
      File "PyInstaller/loader/rthooks/pyi_rth_certifi.py", line 13, in <module>
      File "/Users/nick/.pyenv/versions/3.7.6/envs/kanmail-3.7/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
      File "ssl.py", line 98, in <module>
    ImportError: dlopen(/Users/myName/Applications/Kanmail.app/Contents/MacOS/_ssl.cpython-37m-darwin.so, 2): Symbol not found: ____chkstk_darwin
      Referenced from: /Users/qinluo/Applications/Kanmail.app/Contents/MacOS/libcrypto.1.1.dylib (which was built for Mac OS X 10.15)
      Expected in: /usr/lib/libSystem.B.dylib
     in /Users/myName/Applications/Kanmail.app/Contents/MacOS/libcrypto.1.1.dylib
    [82956] Failed to execute script pyi_rth_certifi
    
    Bug Platform: MacOS 
    opened by ericxsun 8
  • [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:852)

    [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:852)

    Hi

    I setup the docker container and I am trying to add my email server. When I try to add an account I get the error in the title in the settin gs page and I do not see any other info in the Docker terminal.

    Bug Stale 
    opened by gerroon 8
  • Error message in inbox

    Error message in inbox

    Although mails seem to be displayed I see this error:

    URL: http://localhost:51098/api/folders ErrorName: KeyError ErrorMessage: 'inbox' Kanmail version: 1.2103140902 Status: 500 Traceback (most recent call last): File "lib\site-packages\flask\app.py", line 1813, in full_dispatch_request File "lib\site-packages\flask\app.py", line 1799, in dispatch_request File "kanmail\server\views\email_api.py", line 31, in api_get_folders File "kanmail\server\mail_init_.py", line 48, in get_all_folders File "kanmail\server\util.py", line 86, in execute_threaded File "kanmail\server\util.py", line 64, in wrapper File "kanmail\server\mail_init_.py", line 44, in get_folders File "kanmail\server\mail\account.py", line 74, in get_folders KeyError: 'inbox'

    Bug Stale 
    opened by nickbe 6
  • IMAP folder names for German users

    IMAP folder names for German users

    Describe the feature you'd like The software should automatically recognise German folder names. For example: "sent" is "Gesendet" in German. "archive" is "Archiv" "trash" is"Papierkorb"

    Additional context I am happy to help you with a German translation of folder names

    Feature 
    opened by georks 6
  • GMAIL - b'[AUTHENTICATIONFAILED] Invalid credentials (Failure)'

    GMAIL - b'[AUTHENTICATIONFAILED] Invalid credentials (Failure)'

    After entering login details for gmail and using the app password the following error is displayed

    b'[AUTHENTICATIONFAILED] Invalid credentials (Failure)'

    Stale 
    opened by pixelforests 6
  • Failed to execute main script - on windows 10

    Failed to execute main script - on windows 10

    When starting kanmail.exe this error message is all I get: "Failed to execute main script".

    Do need to install a different python version first? If so, then this will make lot's of problem if there's already a python version installed on windows?

    Bug 
    opened by nickbe 5
  • Error saving settings: 'Name'

    Error saving settings: 'Name'

    When I try setting up a new account using IMAP and TLS encryption the connection seems to be established, but after a click on a save button I receive "Error saving settings: 'Name'" error:

    image

    In the logs (?) on top right, I receive the following error:

    image

    If I click on the log (as it's suggested in the log message), all the data disappears and I have to full fill the form again. Tried 3 times now and I'm clueless what's wrong. Any suggestions?


    I love the idea and I really hope the product will meet the expectations. I'm tech savvy but I find the setup screen very confusing (including the error msg above).

    Bug 
    opened by zmija 5
  • Feature request / feedback: filters and workflow keyboard shortcuts

    Feature request / feedback: filters and workflow keyboard shortcuts

    Hi Kanmail team,

    TLDR:

    This app is almost exactly what I've been looking for, but not quite. A few keyboard shortcuts & filters would make it perfect

    Background

    I found your app while looking for an email client to help me track the status of different conversations across multiple inboxes/folders. In the past, I have tried using labels/folders for this (e.g. 'to do', 'doing', 'done'), but neither gmail nor any other mail clients I can find provide a good UI or a good set of shortcuts for this.

    This is exactly what I have been looking for several years; however, without the following conveniences, it is not quite yet to the point where I could migrate to it.

    Use cases/user stories:

    Keyboard shorcuts: move thread to prev/next/nth column

    What I want to do is to be able to quickly flip through and preview my mail threads, and then move them forward/backward in my workflow/columns with a single button press. something like Gmail's [ / ] shortcuts, except instead of archiving the thread, it would move it to the previous or next column, and then show me the next thread in the inbox/currently selected column.

    An alternative idea would be using the number keys(?) to send the current thread to col 1-9 respectively?

    Option to make last column = archive (?)

    Just a thought, but often once I'm done with an email, I want to banish it to the archive.

    Filter columns by current label

    As far as I can tell, selecting a label/folder changes the contents of the leftmost pane, but doesn't filter the displayed columns. If I am working on a set of emails in one folder, it would be nice if I could show ONLY those emails on the kanban board to cut down on clutter and help me focus on the work at hand.


    This is a very exciting app, and I hope to see more amazing features soon! Thanks!

    opened by spaceman-cb 1
  • Fix docker / poetry combo

    Fix docker / poetry combo

    Currently poetry installs things according to platform - the problem with Docker is the platform is considered Linux, which means it tries to install pygobject/GTK stuff which we don't want in Docker.

    Bug 
    opened by Fizzadar 0
  • More efficient sync

    More efficient sync

    Currently we fetch the whole UID list for all emails in a given folder every sync. For the archive folders this may consist of hundreds of thousands of UIDs, take a while to return and be fairly large in side.

    Fetching the whole UID list is important to capture when UIDs/emails have been deleted, but this needn't happen all the time. Additionally we can filter by date to reduce the scope of fetched UIDs, and perhaps with a less often "full sync".

    Sync Feature 
    opened by Fizzadar 0
  • Need to use it for a selected group of people

    Need to use it for a selected group of people

    I'm currently using an email client, provided by the email service provider for a selected group of people. that email client is very basic, hosted on their domain and offers very little customization. I'm looking for the following

    1. DEFAULT DOMAIN NAME: User should only enter email before @domain because all users are on same domain.
    2. DEFAULT EMAIL SERVER: Email client should talk to this particular domain by default. i.e it needs to append @domain when connecting with server
    3. ORGANIZATION THEME : I should be able to apply custom theme (colors and logo) which is the default for users.
    4. DIFFERENT TIMEZONES: users can have different time zones and their time zone should be used.
    5. HOSTING ON SUB DOMAIN : If I host it on a subdomain like email.domain.com the login page should be visible with the customized theme and after login it uses the user's time zone (also available from the email server)

    Can anyone help me tell which of these features are present in Kan-email already?

    opened by SuheylZ 0
Releases(v1.2211160838)
  • v1.2211160838(Nov 16, 2022)

    Download the latest Kanmail here.

    Small batch of bugfixes.

    Changes:

    • Fetch whole body rather than just 1024 bytes for excerpt
    • Don't assume we have a part when parsing bodystructure
    • Don't fail when bodystructure missing from email response
    • Fix call to UID set during missing fix
    • Don't throw sentry errors for not found accounts
    • Don't fail when removing an already removed oauth req
    • Allow disabling session token via env var
    • Fix typo
    • Use new notarytool for MacOS codesigning
    • Docker fixes
    • Update poetry lock
    Source code(tar.gz)
    Source code(zip)
  • v1.2208011017(Aug 2, 2022)

    Download the latest Kanmail here.

    Thing release fixes a bunch of issues with search, which should now function as expected.

    Also included are unread counts on the sidebar, and on MacOS the an initial implementation of notifications for new emails and badge counts.

    Changes:

    • Fix JSON in HTML attributes
    • Display search match counts in sidebar folder links
    • Remove redundant assignment
    • Setup prettier with eslint
    • Git blame ignore prettier commit
    • Install & run prettier on all JS(X)
    • Use cache to indicate if a folder exists, or used to exist, on start
    • Style fixes for search mode & sidebar
    • Refactor handling of email store search mode/control
    • Remove beta text in sidebar
    • Use bundled certifi CA file for SSL IMAP & SMTP connections
    • Misc cleanup & logging improvements
    • Send notifications for newly synced inbox emails
    • Show unread badge & inbox sidebar link counts
    • Add notification API & implement MacOS notifications
    • Add debug log at the end of route handling
    • Use sentinel object to detect missing values
    • Cleanup old requirements code
    • Add .git-blame-ignore-revs file
    • Use poetry for Python dependency management
    • Run black & isort
    • Move window file into module
    • Use common prefix for window management endpoints
    • Update MacOS dev requirements
    Source code(tar.gz)
    Source code(zip)
  • v1.2206171827(Jun 17, 2022)

    Download the latest Kanmail here.

    Changes:

    • Fix Windows builds temporary workaround for choco
    • Update changelog for v1.2206171656
    • Fix editing emails without quotes
    • Fix email send & save button handling / API
    • Pin dsdev-utils package to avoid bug
    • Fix cryptography version in Docker requirements
    • Cleanup changelog commit message
    Source code(tar.gz)
    Source code(zip)
  • v1.2205081824(May 17, 2022)

    Download the latest Kanmail here.

    Slow release to get out this one due to unforseen complications with Windows testing. Next up focus is on the Windows version including a proper installer.

    Changes:

    • Only run Linux tests with xvfb
    • Bump python version file
    • Run the tests with xvfb on Linux
    • Add FUNDING config
    • Cleanup of build action, start building Linux again
    • Install webview2-runtime on Windows before build
    • Only run requirements workflow on req file change
    • Make pytest verbose
    • Use Python 3.8 for Windows builds
    • Use platform specific requirements for build
    • Add compiled development requirements
    • Update compiled requirements
    • Upload compiled requirements as artifacts
    • Upgrade to python v3.9.12
    • Don't throw error for bug in pyupdater refresh method
    • Fixup requirement versions
    • Run requirements compilation on main branch
    • Upgrade pip before compiling requirements
    • Upgrade Windows version in workflows
    • Add requirements compile workflow
    • Upgrade to pywebview 3.6
    • Generate development requirements each platform
    • Pass session token to newly opened windows in browser mode
    • Capture IMAP4.Abort errors
    • Add a basic docker-compose.yml for deployment convenience
    • Add options to deactivate external APIs + opt-out for update
    • Rework emails API to work around flask/werkzeug path handling fails
    • Improve handling of body IMAP responses
    • Stop sending JS RequestErrors to Sentry that the server already handled
    • Include tracebacks for all error logs
    • Fix offline not loading cached date
    • Don't fail folders endpoint for individual account issues
    • Add notarize team ID support/envvar.
    Source code(tar.gz)
    Source code(zip)
  • v1.2201182059(Jan 18, 2022)

  • v1.2201151710(Jan 15, 2022)

  • v1.2112242054(Dec 24, 2021)

  • v1.2112131141(Dec 13, 2021)

  • v1.2112121539(Dec 12, 2021)

    This release adds support for signatures and huge improvements to the send message editor.

    Changes:

    • Remove unused release script.
    • Don't check session token on index in non-app mode.
    • Always create column + meta stores.
    • Implement link entities in the editor component using control input.
    • Make control input component/store more flexible.
    • Only generate text as HTML if there's text data.
    • Rewrite email send app.
    • Fix contact delete button.
    • Separate text from HTML-ified text in messages.
    • Fix loading folders after initial app start.
    • Add some basic styles to the drafttail editor.
    • Add draft-js and remove quill.
    • Add signatures to the settings model.
    • Add signatures to settings.
    • Fix using false boolean in class name.
    • Complete conversion of account list to use overlay list base.
    • Don't allow saving account form with an empty name.
    • Extract common editor component parts.
    • Extract common list overlay component methods.
    • Add basic app run test.
    • Improve exit handling in main script.
    • Add test stage before building.
    • Disable Linux build/test for now.
    • Bump ipython dev requirement.
    • Add pytest dev requirement.
    • fix config volume permission issues
    Source code(tar.gz)
    Source code(zip)
  • v1.2110131703(Oct 13, 2021)

    Contains an urgent fix for the latest Windows build.

    Changes:

    • Finish complete release script.
    • Tolerate wobbly MacOS notarization process.
    • Update Windows requirements.
    • Update dev requirements.
    Source code(tar.gz)
    Source code(zip)
  • v1.2110040834(Oct 4, 2021)

    Changes:

    • Make build commmand work on Windows.
    • Fix check_output call.
    • Remove leftover temp version lock references.
    • Cleanup version release handling.
    • Add attachments to IMAP connection mock bodystructure output.
    • Improve formatting of bytes in attachments.
    • Run build work flow on push & tag.
    • Cleanup account form styling.
    • De-duplicate account settings state handling functions.
    • Bump to upstream pywebview commit (MacOS reqs only for now).
    • Run the build workflow on main branch.
    • Update MacOS requirements.
    • Add the latest docker tag when making a release.
    • Fix add contact form styles.
    • Hide any overflow on email thread avatar initials.
    • Merge the main + user folders in the sidebar.
    • Improve account settings error handling UX.
    • Don't pass false as a classname, use undefined.
    • Fix button & form styling bugs in contacts app.
    • Fix two bugs in the connection mocks.
    • Add compact columns style/setting.
    • Fix prop type validation on tooltip components.
    • Don't assume the inbox alias setting exists.
    • Add licensed settings to disable Sentry/Posthog.
    • Fix account name validation.
    • Update for pywebview 3.5.
    • Use git version of pywebview with bugfix.
    • Fixes for building Linux client in Docker.
    • Add comment for MacOS Python package install/build.
    • Use github path to fix macOS path.
    • Try to fix macOS path before building.
    • Don't use pip-tools in builds just normal pip reqs.
    • Use python3/pip3 commands.
    • Install macOS pkg with old macosx SDK target.
    • Pin specific commits for third party actions.
    • More fixes for the binary filtering in spec.
    • Fix indentation in spec file.
    • Update docker reqs & fix Docker builds.
    • Update spec exclusion of libraries.
    • Install gtk/cairo/webkit apt packages when building for Linux.
    • Downgrade werkzeug in linux requirements.
    • Set MACOSX_DEPLOYMENT_TARGET=10.14 in build workflow.
    • Add Linux build & requirements.
    • Ensure clean script removes any release changelog file.
    • Add macOS build target.
    • Cleanup build action.
    • Use Windows server 2016.
    • Use matrix strategy for build action.
    • Add fake pyu config for GitHub builds.
    • Upload the build to S3 once complete.
    • Pass through secrets when building the app.
    • Make an empty .pyupdater directory before building.
    • Setup Windows build workflow.
    • Add Windows pywin32 requirement.
    Source code(tar.gz)
    Source code(zip)
  • v1.2107311301(Oct 4, 2021)

    Changes:

    • Return & display error information when fetching email texts.
    • Handle update errors in the UI.
    • Fix handling account UI when failing to auto setup a new acccount.
    • Improve error when we autoconf but login still fails.
    • Add temporary handling of missing header errors.
    • Switch to the GitHub hosted ISPDB.
    • Capture & log request errors contacting the ISPDB.
    • Restore auto creation of GitHub releases.
    • Fix pywebview debug in window hacks.
    • Wait before starting to check for notarization status.
    • Replace invalid header characters when decoding.
    • Catch and log request errors fetching contact icons.
    • Add pywin32 Windows requirement.
    Source code(tar.gz)
    Source code(zip)
  • v1.2107081657(Jul 8, 2021)

    Changes:

    • Cleanup request error handling.
    • Set release for Sentry.
    • Log which app was loaded to PostHog.
    • Capture/handle OAuth request errors properly.
    • Pass through werkzeug.HTTPException errors properly.
    • Ignore missing folder UID lists in cleanup.
    • Pass utf-8 charset when searching against the server.
    • Don't attempt to decode null data.
    • Don't raise error when server returns less than expected messages.
    • Don't delete oauth responses until tested.
    Source code(tar.gz)
    Source code(zip)
  • v1.2107031449(Jul 3, 2021)

    Changes:

    • Bump pyupdater to v4.
    • Update Windows requirements.
    • Only run pip-sync during release builds.
    • Don't mangle names when compiling JavaScript.
    • Fix path fields in pyupdater spec template.
    • Fix bug where changing account name breaks cached headers.
    • Fix handling of different return IMAP keys.
    • Fix logo on meta window.
    • Downgrade to python3.8.
    Source code(tar.gz)
    Source code(zip)
  • v1.2107011421(Jul 1, 2021)

    Big release, top highlight is Google OAuth integration enabling "sign in with Google".

    Changes:

    • Fix email header response parsing for Zoho mail.
    • Use one criticalRequestNonce per thread load.
    • Fixup build instructions for M1 Macs.
    • Pass Posthog settings to base template.
    • Reoder window settings.
    • Throw a proper error if no root element is found.
    • Add Posthog JS to capture app load events & settings.
    • Add debug sentry flag.
    • Add random device IDs to add to Sentry/Posthog events.
    • Use a TimedRotatingFileHandler instead of FileHandler.
    • Fix missing response on OAuth delete response API.
    • Update MacOS compiled pip requirements.
    • Remove object-hash JS requirement.
    • Use an incremental critical request nonce to fix weirdness.
    • Re-ehlo before attempting to re-auth when refreshing OAuth token for SMTP.
    • Fix missing favicon in builds.
    • Delete OAuth responses only after they're handled.
    • Rework session token route wrapper.
    • Use warning log for view network exceptions.
    • Don't send sentry JS errors for network errors.
    • Cleanup request error handling.
    • Bump defusedxml to v0.7.0.
    • Fix license error response message key.
    • Make new account flow always same width.
    • Hide any previous account error when we connect.
    • Fix connected text on welcome settings.
    • Improve license error message.
    • Cleanup license content before parsing.
    • Don't log refresh tokens.
    • Capture OAuth errors and refresh the access token.
    • Fix missing sentry sdk MacOS requirement.
    • Implement bundling of "hidden" data when building.
    • Update text when failing to connect to OAuth accounts.
    • Move settings errors into dedicated message element.
    • Hide username & password when editing OAuth accounts.
    • Use hint to fix connected/not connected text in account settings.
    • Provide hint on whether an account is connected in settings UI.
    • Properly abort when checking for duplicate account names.
    • Hide password field when editing OAuth email accounts.
    • Add setting migration for removal of copy_on_move.
    • Only hide archive when showing other tags a thread has.
    • Highlight trashed messages in thread view.
    • Get Google OAuth settings from hidden data.
    • Fix SMTP oauth2 authentication string/process.
    • Don't assume oauth responses contain a (new) refresh token.
    • Limit the max width of the new account form.
    • Use "sign in with Google" language.
    • Add cancel button when waiting for oAuth consent.
    • Remove Google app password information.
    • Add oauth settings for gmail.
    • Implement OAuth based authentication for IMAP/SMTP connections.
    • Add OAuth handlers, API and support to accounts/settings APIs.
    • Don't add password setting during autoconfiguration.
    • Implement OAuth new account form in settings app.
    • Tidy up tag listing in email column threads.
    • Use json.load > json.loads.
    • ADd Sentry to the frontend.
    • Add Sentry to the backend server.
    • Add "hidden" data at build time.
    • Sync sidebar folders by default.
    • Move all regular interval email syncs to the main component.
    • Render other folders as labels in threads.
    • Remove complicated "copy on move" feature.
    • Fix sidebar header buttons when frameless.
    • Add tooltips w/keyboard shortcuts to header search/compose buttons.
    • Add c keyboard shortcut to open a new compose window.
    • Rework keyboard shortcut handling to work with combinations.
    • Add s keyboard shortcut to star/unstar threads.
    • Change the search keyboard shortcut from s -> /.
    • Add move button to threads, remove explicit copy shortcut.
    • Use self closing tags for icons.
    • Correct unstar button tooltip text.
    • Make it possible to hide the main column.
    • Enable save sent copies setting by default unless gmail.
    • Add delete on trash setting.
    • Move pyinstaller/pyupdater into base requirements.
    • Prevent paths being passed as download filenames.
    • Add delete emails server API.
    • Filter threads in the trash column to only show trashed messages.
    • Add email store deleteEmails function.
    • Show a star on starred threads (not just hover!).
    • Add tooltips to the thread buttons.
    • Add permanent delete button to threads in the trash folder.
    • Reimplement the tooltip in JavaScript.
    • Only trigger stale labels on unassigned bugs.
    • Upgrade pyinstaller & flake8 dev requirements.
    • Upgrade pyobjc to 7.2.
    • Upgrade to Python 3.9.
    • Use node 16.
    • Upgrade yarn packages.
    • Fix webpack argument order.
    • Remove no longer needed MacOS build fixes.
    Source code(tar.gz)
    Source code(zip)
  • v1.2104091748(May 14, 2021)

    Big release containing many bug fixes and performance improvements. Major feature is a new, simplified setup account flow.

    Changes:

    • Fix docker builds.
    • Upgrade/audit yarn packages.
    • Fix updating accounts missing account index ID.
    • Better label for the account display name.
    • Don't allow adding accounts with no display name.
    • Better prop name for adding new account flag.
    • Tidy up new account form buttons.
    • Fix Windows ico file.
    • Fix up last release changelog (Windows only).
    • Restore absolute path for make constants.
    • Formatting clean script imports.
    • Run pip-sync before building.
    • Fixup readme information.
    • Use pip-tools to manage requirements.
    • Fix window open URL server & host.
    • Move to Open Sans font and cleanup typography.
    • Fix license text issues.
    • New (final) icons.
    • Remove unncessary resize on settings window load.
    • Fix meta file header icon position.
    • Add links to iCloud/Google app password documentation pages.
    • Update to new logo.
    • Improve style of the error boundary.
    • Implement app loading initial page content.
    • Remove unused state variables.
    • Use cheroot server in production/app mode.
    • Update account API path for consistency.
    • Don't require a Docker image to release.
    • Add two-phase new account form.
    • Return back whether autconf was successful in account test API.
    • Allow frontend to specify domain to autoconf.
    • Add type hints to autoconf module.
    • Enable passing a specific domain into get_autoconf_settings.
    • Add per-domain hard-coded connection settings for main providers.
    • Setup theme CSS for settings app.
    • Add default (true) for SSL verify hostname connection setting.
    • Disable resize on meta window.
    • Reduce default window width.
    • Confirm before closing settings window.
    • Tidy up contacts app header.
    • Remove loader background color.
    • Update settings app to use tabbed design.
    • Fix error handling contact emails without @.
    • Provide Message-ID when creating messages to send.
    • Add resizable & confirm_close options when opening windows.
    • Add resize window API/util.
    • Remove unused minimize/maximize window API/functions.
    • Rework themes to use variables, one common set of styles.
    • Add header button set / active styles.
    • Don't assume emails have a message ID.
    • Use the same JS files in all modes in the base template.
    • Restore old static folder location.
    • Use url_for in frozen (app) static redirect.
    • Add /favicon.ico endpoint.
    • Install cargo to fix cryptography compilation.
    • Batch save contacts from multiple messages together.
    • Fix bug in saving contacts.
    • Fix keyboard shortcuts remaining disabled after searching.
    • Use the latest external email for thread avatars.
    • Add favicon for browser mode.
    • Fix static folder path.
    Source code(tar.gz)
    Source code(zip)
  • v1.2103140902(Mar 14, 2021)

    Note: Windows only release to fix issues with webview2. Full release of other features upcoming for all OS targets.

    Changes:

    • Upgrade to pywebview 3.4.
    • Implement custom smtplib override to enable Unicode passwords.
    • Updated screenshot.
    • Debounce the main process emails function.
    • Use ReactDOM.unstable_batchedUpdates to batch email updates.
    • Use the icon from the client assets in readme.
    • Tidy up docstring.
    Source code(tar.gz)
    Source code(zip)
  • v1.2101301934(Jan 30, 2021)

    This release adds support for IMAP namespaces.

    Changes:

    • Update folder settings when creating a new account.
    • Add folder prefix to account settings.
    • Implement proper IMAP namespace handling.
    • Rewrite account test API to use an exception for errors.
    • Fix margin on welcome settings header.
    • Don't lookup the same domain twice in autoconf.
    Source code(tar.gz)
    Source code(zip)
  • v1.2101211835(Jan 21, 2021)

    This releases introduces a major design overhaul and cleanup, with dark mode support. Check out the settings to pick default, light or dark theme settings.

    Changes:

    • Correct thread title border colour in default/light themes.
    • Fix thread message border in dark theme.
    • Only add dark mode event listener if supported.
    • Fixes for dark theme colours.
    • Tweak contacts header search bar margin.
    • Sort merged single sender threads properly.
    • Make control overlay text bigger.
    • Combine if statements.
    • Add theme class after removing old one (in case same).
    • Add dark/light theme settings.
    • Fix 1px extra margin error on main column.
    • Tidy up headers, make buttons not drag window.
    • Add avatars to contact list.
    • Rework Cocoa traffic light button repositioning.
    • Dramatically improve the fake IMAP response content.
    • Never enable caching if we're using fake IMAP responses.
    • Always sync trash folder, as may contain thread messages.
    • Re-order main alias folder sidebar ordering.
    • Improve date formatting for this-year dates.
    • Increase text size of meta/meta-file apps.
    • Don't attempt to make drag region on non-element.
    • Improve short address formatting.
    • Add dark/light theme settings to the setting model.
    • Setup dark/light theme switching and activation on app boot.
    • Remove Robot slab import.
    • Tidy up column email design/layout.
    • Add settingsStore to window for debugging.
    • Import the new dark/light themes.
    • Ensure tooltips always appear on top.
    • Move thread sidebar width into less variable.
    • Allow open column to be larger and detect/fix main column width.
    • Set frameless/wrapper classes in generic app boot.
    • Add "s"/escape keyboard shortcut to open/close search.
    • Move search out of sidebar and above the columns.
    • Tidy up sidebar icons, make spam yellow.
    • Move purchase button to top of sidebar.
    • Move save/etc window buttons into headers, tidy up styling.
    • Remove unused CSS.
    • Rename frameless.less -> platforms.less and cleanup.
    • Move font sizes into less variables.
    • Add dark & light theme CSS.
    • Break out all colour related CSS into a theme.
    • Use webpack --mode argument instead of envvar.
    • Better name for get main JS filename in webpack config.
    • Use python rather than script direct (Windows dev support).
    • Rename less variable orangee -> red.
    • Replace/simplify the headerbar + dragbar components.
    • Update spam icon (exclamation triangle).
    • Remove Roboto Slab font.
    • Add lock_function util.
    • Fix cache disable envvar flag.
    • Raise an error when parts missing in dev.
    • Lock the add_contacts function.
    • Capture LoginErrors connecting to IMAP servers.
    • Use deep path for scroll polyfill to fix Windows support.
    • Use JS screen info to cap saved window height/width.
    • Pass JS detected window position/size/resolution to backend.
    • Expand support for German IMAP folder names (provided by @georks).
    • Sort column threads after including incoming.
    • Merge pull request #148 from vilhelmprytz/vilhelmprytz-minor-readme-fix
    • Fix key error when accessing missing header parts.
    • Lock when adding/removing cached header flags.
    • Fix unsetting column maxwidth.
    • Add CSS classes to each of the sidebar alias folders.
    • Make new avatar component and extract icons from thread message.
    • Show incoming threads when moving to a new column.
    • Replace "intsall" with "install" in README
    • Update yarn lock file.
    • Add seamless scroll polyfill package.
    • Remove old debug statement (whoops!).
    • Make the column header email count respect the selected account.
    • Fix deleted/moved/archived threads re-appearing when switching main column.
    • Update drafts sidebar icon (file -> pencil).
    • Move sent after archive in sidebar.
    • Make moving messages undo-able.
    • Ensure development works properly / similarly to app builds.
    • Split up webpack app bundles and extract files/css.
    • Remove unused style.
    • Install less pyobjc packages and upgrade to v6.2.2.
    • Remove pinned requirements.
    Source code(tar.gz)
    Source code(zip)
  • v1.2012041414(Dec 4, 2020)

    Major addition: always show images from a given sender.

    Changes:

    • Use newer pywebview commit than released.
    • Implement "window hacks" for cocoa.
    • Tidy up the add contact form/contacts app.
    • Fix contact option list in send app.
    • Restore sleep inside main python when debug.
    • Upgrade pywebview to 3.3.5.
    • Offer to always allow images for a message in thread view.
    • Implement allowed images in email text API.
    • Add API to create/delete allowed image flags for an email.
    • Add the allowed images database table/model.
    • Remove Folder.get_email_header_parts.
    • Fix save contacts call argument.
    • Make keyboard column scrolling smoother & consistent.
    • Scroll down to first open message on open thread.
    • Remove sleep before starting app in dev.
    • Actually remove pydash requirement.
    • Tidy up logging module mess - always log to stderr.
    • Add batch save contacts function and use when adding contacts.
    • Store contacts from trash.
    • More descriptive function name.
    • Add get contacts API endpoint.
    • Improve consistency of contacts module.
    • Use functools LRU cache cache_clear.
    • Replace pydash.memoize with functools.lru_cache.
    • Fix scroll container on contacts app.
    Source code(tar.gz)
    Source code(zip)
  • v1.2011090915(Dec 4, 2020)

  • v1.2010161619(Oct 16, 2020)

    Changes:

    • Only warn when part is missing on thread fetch.
    • Fix connection mock folder class for offline dev.
    • Try the following column if the first is empty when navigating between.
    • Redo attachment handling to be compatible with browser mode.
    • Fix empty column message by always showing it.
    • Reload the welcome window after saving initil settings.
    • Upgrade to webpack 4 & tidy up packages.
    • Update dev instructions.
    • Update readme to remove Linux official support.
    • Don't build Linux app by default.
    • Fix the new issue links.
    Source code(tar.gz)
    Source code(zip)
  • v1.2010061014(Oct 10, 2020)

    No Linux build yet unfortunately due to upstream changes breaking the build process.

    Changes:

    • Correct providers & support doc link constants.
    • Hide emails immediately when dropping on sidebar folders.
    • Automatically clean the folder cache after 120s after start.
    • Implement vacuuming for the sqlite folders database.
    • Pass message object, not string, when saving copies of sent messages.
    • Add help button to sidebar, with setting to hide.
    • Update license button.
    • Update screenshot.
    Source code(tar.gz)
    Source code(zip)
  • v1.2009020945(Oct 10, 2020)

    Minor improvements - note you will need to resize/position the main window.

    Changes:

    • Further improve the fake IMAP mocking.
    • Store window position as JSON in new location.
    • Icon support for iCloud/Outlook accounts.
    • Include account key when merging threads.
    • Move docs to website.
    • Create codeql-analysis.yml
    Source code(tar.gz)
    Source code(zip)
  • v1.2008131047(Oct 10, 2020)

  • v1.2008071409(Aug 7, 2020)

    This release adds full draft support (save + edit), as well as move and copy keyboard shortcuts (m & c respectively).

    Changes:

    • Fix variable in send handler.
    • Rework the connection mock classes for better testing.
    • Fix non-main window drag bar z-index.
    • Fix sidebar show/hide button count.
    • Tidy up the control input style.
    • Make threads slide away when moving.
    • Implement copy & move keyboard shortcuts.
    • Yum upgrade run.
    • Bump webpack dev server patch version.
    • Actually fix subject header lines.
    • Use switch instead of all the if statements for keyboard controls.
    • Fix overflow hiding tooltip in column email threads.
    • Fix z-index of header errors in non-main windows.
    • Fix width of add new column form.
    • Complete implementation of draft saving and editing.
    • Tweak merging of single sender threads:
    • Add save draft/email button to send app.
    • Don't show archive button for draft threads.
    • Add append email to folder API endpoint.
    • Add many more Python type annotations/mypy setup.
    • Move fake_imap.py -> connection_mocks.py.
    • Fix header errors showing behind columns.
    • Add contact icons checkbox to welcome settings flow.
    Source code(tar.gz)
    Source code(zip)
  • v1.2007081733(Aug 7, 2020)

    Changes:

    • Sort the folder list so we group single thread messages properly.
    • Fix drag bar on non-main window.
    • Always render the dragbar.
    • Fix .no-select class w/WebKit.
    Source code(tar.gz)
    Source code(zip)
  • v1.2007031541(Aug 7, 2020)

    This version brings a major update to Kanmail including an overhaul of the column and thread designs and a number of fixes.

    Changes:

    • Fix Quill editor to use div instead of p for blocks.
    • Fix call to delete header items.
    • Ignore null thread references.
    • Remove pointless keyboard disabling.
    • Major overhaul of main emails app design.
    • Add randomcolor npm package.
    • Default yes to all release script prompts.
    • Don't apply dragging functions when not frameless.
    • Add get contact icons + group single threads settings.
    • Enable cross origin access in dev for usable stack traces.
    • Fix incorrect decoding of attachments (leave as bytes).
    • Accept the session token as a URL parameter as well as header.
    • Add API to fetch icons for emails.
    • Rename send app less file.
    • Show JS error tracebacks.
    • Enable merging threads by subject behind a flag.
    • Add logic to enable merging single emails from the same sender.
    • Don't include column meta count if the folder does not exist on the server.
    • Stop closing thread on keyboard shortcuts.
    • Add makeNoDragElement function.
    • Move makeDragElement into window.js.
    Source code(tar.gz)
    Source code(zip)
  • v1.2006211645(Aug 7, 2020)

    Changes:

    • Don't close the window when saving onboarding settings!
    • Add top margin on send + welcome settings.
    • Add docs link to issue chooser.
    • Remove temp changelog removal from make.clean script.
    • Comment out github release bits as does not work.
    • Write changelog before building.
    • Fix headers for contacts + settings apps.
    • Improve thread overlay styling.
    • Make thread meta 50% opaque unless hovered/active.
    • Split out window API views.
    • Ensure default options on openWindow util.
    • Remove pre background color.
    • Allow body scrolling.
    • Remove unused method.
    • Link to changelog/license on meta page.
    • Create MetaFileApp to view bundled markdown files.
    • Add linkify=True kwarg to markdownify util function.
    • Remove unncessary wrapper classes.
    • Implement new welcome/onboarding page with account settings.
    • Break out the account list into it's own component.
    Source code(tar.gz)
    Source code(zip)
  • v1.2006081025(Jun 8, 2020)

    Download the latest Kanmail here.

    This release completely rebuilds the thread view, which now appears as a popover on top of all the columns/folders. This means it shows up consistently rather than jumping around the screen. This also enables an improved thread view and controls.

    Changes:

    • Add a debug traceback log on account connection tests.
    • Add comment to support unicode SMTP usernames/passwords.
    • Properly encode unicode IMAP usernames/passwords.
    • Rebuild the thread view.
    • Move green into less variable.
    • Fix thread hashing by actually using the oldest email.
    • Move logic for finding next/previous thread/column into util.
    • Reset column store temporary hash sets on render.
    • Fix columnStore.hasHiddenThread return value.
    • Tidy up readme bits.
    • Add UI docs.
    • Re-capture that keyerror when destroying a window.
    • Fix saving window position/size on Linux/Windows.
    • Upgrade pywebview and use the drag region functionality.
    • Log the server host/port on start (debug).
    • Formatting.
    • Add .node-version file.
    • Remove leftover try/except.
    • Log the settion token (debug).
    • Improve new issues page.
    Source code(tar.gz)
    Source code(zip)
Use Django admin to manage drip campaign emails using querysets on Django's User model.

Django Drip Drip campaigns are pre-written sets of emails sent to customers or prospects over time. Django Drips lets you use the admin to manage drip

Zapier 630 Nov 16, 2022
This python script will generate passwords for your emails, With certain lengths, And saves them into plain text files.

How to use. Change the Default length of genereated password in default.length.txt Type the email for your account. Type the website that the email an

2 Dec 26, 2021
GMailBomber is a form of Internet abuse which is perpetrated through the sending of massive volumes of email to a specific email address with the goal of overflowing the mailbox and overwhelming the mail server hosting the address, making it into some form of denial of service attack.

GMailBomber is a form of Internet abuse which is perpetrated through the sending of massive volumes of email to a specific email address with the goal of overflowing the mailbox and overwhelming the

Muneeb 5 Nov 13, 2022
A Pythonic interface for Google Mail

GMail for Python A Pythonic interface to Google's GMail, with all the tools you'll need. Search, read and send multipart emails, archive, mark as read

Charlie Guo 1.7k Dec 29, 2022
Heimdall watchtower automatically sends you emails to notify you of the latest progress of your deep learning programs.

This software automatically sends you emails to notify you of the latest progress of your deep learning programs.

Zhenyue Qin 22 Dec 06, 2021
An offline Phishing Email Analyzer.

An offline Phishing Email Analyzer.

Kamran Saifullah (Frog Man) 11 Oct 19, 2022
Python IMAP for Human beings

Imbox - Python IMAP for Humans Python library for reading IMAP mailboxes and converting email content to machine readable data Requirements Python (3.

Martin Rusev 1.1k Dec 30, 2022
Temp-SMS-Receive - A Program Which Allows You To Receive Temp SMS

Welcome to Temp-SMS-Receive 👋 A Program Which Allows You To Receive Temp SMS AP

Sandaru Ashen Fernando 21 Dec 10, 2022
This library is helpful when creating accounts, it has everything you need for this

AccountGeneratorHelper Library to facilitate accounts generation. Unofficial API for temp email services. Receive SMS from free services. Parsing and

Denis 52 Jan 07, 2023
Mail-Checker is a python script that lets you see your mails directly from the terminal without having to login each time.

Mail-Checker ##Mail-Checker is a python script that lets you see your mails directly from the terminal without having to login each time. ##Before you

Siddharth Pradeep 1 Jan 12, 2022
:incoming_envelope: IMAP/SMTP sync system with modern APIs

Nylas Sync Engine The Nylas Sync Engine provides a RESTful API on top of a powerful email sync platform, making it easy to build apps on top of email.

Nylas 3.5k Dec 23, 2022
Django SMTP Protocol with Gmail

Django SMTP Protocol with Gmail This is the free service from gmail to send and receive emails. What we need for this things done, Python/pip install

Mehedi Hasan 3 Dec 13, 2022
A Django app that allows you to send email asynchronously in Django. Supports HTML email, database backed templates and logging.

Django Post Office Django Post Office is a simple app to send and manage your emails in Django. Some awesome features are: Allows you to send email as

User Inspired 856 Dec 25, 2022
A Discord Mod Mail bot made in python

Fish-Mail The mod mail bot for Fish Hosting Note: You are not allowed to remove the names in the credit command Note: If you want any ideas/commands a

28 Aug 30, 2022
SMTP In some vulnerable configurations, email servers can also be aggregated Use information that gives us information about the host or network Give

SMTP In some vulnerable configurations, email servers can also be aggregated Use information that gives us information about the host or network Give. The SMTP protocol supports some basic commands s

m3hr44n 1 Jan 16, 2022
Djrill is an email backend and new message class for Django users that want to take advantage of the Mandrill transactional email service from MailChimp.

Djrill: Mandrill Transactional Email for Django Djrill integrates the Mandrill transactional email service into Django. PROJECT STATUS: INACTIVE As of

Brack3t 327 Oct 01, 2022
Python Email Sender (PES) is a program made with Python using smtplib, socket and tkinter.

Python Email Sender (PES) is a program made with Python using smtplib, socket and tkinter. This program was made for sender email to be a gmail account because that's what I used when testing it out,

Zacky2613 1 Aug 26, 2022
Send email notification when receiving Facebook message.

Send email notification when receiving Facebook message.

Radon Rosborough 4 May 08, 2022
Automatically Send Custom Named Certificates via Mail

Welcome to Certificate Launchpad 🚀 Automatically Send Custom Named Certificates via Email Intro After any event, sending certificates to attendees or

Dc7 16 Oct 16, 2022
Python library for sending emails.

Mail.py Python library for sending emails. Installation git clone https://github.com/SunPodder/Mail.py cd Mail.py python setup.py install Usage Imp

Sun 4 Nov 24, 2021