<commit_before>pyMail
======
The code here is purely exploratory.

This is a Python+PySide desktop application that runs under Linux, OSX
and Windows (7, at least).

We'll use PySide.  This means we can use Python 3.  I've waited long enough
for wxPython to be compatible with Python 3.

The aim is to have enough functionality to replace my use of Thunderbird.
With Mozilla disowning Thunderbird it's probably time to move on.  I can't
find anything that looks usable, simple and is also free.  So I'll experiment
here and see if the idea goes anywhere.

Requirements
------------
* Python+PySide+Python 3.
* IMAP+SMTP protocol, targetted initially at GMail.
* Associated address book.
* Handle HTML email plus attachments.
* Address book has functionality close to that in Thunderbird.
* Save config and address book to separate files in a near-text form.
* The UI dedicates the maximum space to displaying the email body.

Will need to check Python 3 compatability with other requirements such as:

* imaplib
* email

Nice to have?
-------------
* Links to environment calendar system.


Main Screen
-----------

::

    +------------------------------------------------------------------------+
    | toolbar                                                                |
    +========================================================================+
    |                                                                        |
    |                                                                        |
    | headers (one line per email)                                           |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    +------------------------------------------------------------------------+
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    | body of selected email in headers pane                                 |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    +------------------------------------------------------------------------+

The app will be driven by toolbar and menu.  Possibly also right-click
operations on individual headers.

We use a two pane view instead of the Thunderbird (and others) three pane
approach.  In that approach one pane is only to select a mailbox.  We can do
that through the toolbar.  Have two "buttons" in the toolbar, the left-most
showing the server and the second showing the mailbox.

What do we do if an email body has both plain text and HTML payloads?  Display
both, plain text only or HTML only?<commit_msg>Added ideas that occurred overnight<commit_after>pyMail
======
The code here is purely exploratory.

This is a Python+PyQt5 desktop application that runs under Linux, OSX
and Windows (7, at least).

We'll use PyQt5.  This means we can use Python 3.  I've waited long enough
for wxPython to be compatible with Python 3.

The aim is to have enough functionality to replace my use of Thunderbird.
With Mozilla disowning Thunderbird it's probably time to move on.  I can't
find anything that looks usable, simple and is also free.  So I'll experiment
here and see if the idea goes anywhere.

Requirements
------------
* Python3+PyQt5.
* IMAP+SMTP protocol, targetted initially at GMail servers.
* Associated address book.
* Handle HTML email plus attachments.
* Address book has functionality close to that in Thunderbird.
* Save config and address book to separate files in a near-text form.
* The UI dedicates the maximum space to displaying the email body.

Will need to check Python 3 compatability with other requirements such as:

* imaplib
* email

Nice to have?
-------------
* Links to environment calendar system.


Main Screen
-----------

::

    +------------------------------------------------------------------------+
    | toolbar                                                                |
    +========================================================================+
    |                                                                        |
    |                                                                        |
    | headers (one line per email)                                           |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    +------------------------------------------------------------------------+
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    | body of selected email in headers pane                                 |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    |                                                                        |
    +------------------------------------------------------------------------+

The app will be driven by toolbar and menu.  Possibly also right-click
operations on individual headers.

We use a two pane view instead of the Thunderbird (and others) three pane
approach.  In that approach one pane is only to select a mailbox.  We can do
that through the toolbar.

The toolbar will have:

* two "buttons" in the toolbar to select server and mailbox.
  The left-most shows the server and the second shows the mailbox.
* a "delete" button to delete currently selected email
* a "reply" button ...
* a "forward" button ...

What do we do if an email body has both plain text and HTML payloads?  Display
both, plain text only or HTML only?
{'fraction_non_alphanumeric': 0.1193565127140633, 'fraction_numerical': 0.0016865594187856772, 'mean_word_length': 0.6632146709816613, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 126, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6142651', 'n_tokens_mistral': 1218, 'n_tokens_neox': 1138, 'n_words': 557}