Git Product home page Git Product logo

mailpile / mailpile Goto Github PK

View Code? Open in Web Editor NEW
8.8K 392.0 1.0K 25.15 MB

A free & open modern, fast email client with user-friendly encryption and privacy features

Home Page: https://mailpile.is

License: Other

JavaScript 16.29% Makefile 0.29% Python 60.01% CSS 6.43% HTML 12.25% Shell 0.74% Batchfile 0.02% Roff 0.01% Dockerfile 0.02% Ruby 0.02% Less 3.93%
e-mail security pgp search-engine tags imap-client smtp-client

mailpile's Introduction

Welcome to Mailpile!

IMPORTANT NOTE

Development on this codebase has halted, until the Python3 rewrite has completed.

Apologies to those who have unanswered, out-standing pull requests and issues. 😒 Your efforts are appreciated!

If you rely on this code and have your own branch which you actively maintain, let us know: we would be happy to link to it.

If you need to run Mailpile v1 to access legacy data, consider using our legacy Docker images.


Introduction (Obsolete)

Mailpile (https://www.mailpile.is/) is a modern, fast web-mail client with user-friendly encryption and privacy features. The development of Mailpile is funded by a large community of backers and all code related to the project is and will be released under an OSI approved Free Software license.

Mailpile places great emphasis on providing a clean, elegant user interface and pleasant user experience. In particular, Mailpile aims to make it easy and convenient to receive and send PGP encrypted or signed e-mail.

Mailpile's primary user interface is web-based, but it also has a basic command-line interface and an API for developers. Using web technology for the interface allows Mailpile to function both as a local desktop application (accessed by visiting localhost in the browser) or a remote web-mail on a personal server or VPS.

The core of Mailpile is a fast search engine, custom written to deal with large volumes of e-mail on consumer hardware. The search engine allows e-mail to be organized using tags (similar to GMail's labels) and the application can be configured to automatically tag incoming mail either based on static rules or bayesian classifiers.

Trying Mailpile

If you need to run Mailpile v1 to access legacy data, consider using our legacy Docker images.

Credits and License

Bjarni R. Einarsson (http://bre.klaki.net/) created this! If you think it's neat, you should also check out PageKite: https://pagekite.net/. SmΓ‘ri and Brennan joined the team in 2013 and made this a real project (not just a toy search engine).

The original GMail team deserve a mention for their inspiring work: wishing the Free Software world had something like GMail is what motivated Bjarni to start working on Mailpile. We would also like to thank Edward Snowden for inspiring us to try and make PGP usable for journalists and everday folks!

Contributors:

And of course, we couldn't do this without our community of backers.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation. See the file COPYING.md for details.

mailpile's People

Contributors

alexanderhaase avatar aviau avatar bjarnirunar avatar bnvk avatar bringhurst avatar datadaode avatar djmaze avatar doublemalt avatar fbernitt avatar flakybit avatar hazelesque avatar infinite-joy avatar jackdca avatar jocelyndelalande avatar largestprime avatar loidor avatar maxking avatar naganikhilbijjala avatar ngbatnicdotmil avatar nifgraup avatar noahhaasis avatar pagekite avatar peturingi avatar riset avatar rschulman avatar smari avatar torkve avatar ulikoehler avatar vezult avatar vrutkovs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mailpile's Issues

Create a redirect-function

One of the things I love in Thunderbird is the 'Redirect'-addon: this addon resends the selected email(s) with the original sender to a new recipient. I need this often when emails arrive in some inbox in my company and I want to get these emails to another user. I could forward these emails, but then the structure and content of the original email is changed and the new recipient cannot simply reply, because if would not go the original sender.

Feature request: conversations view support

One killer feature of gmail is conversations view. It is absolutely essential if you receive a large chain of email, especially mailing list discussions, it is impossible to follow indicidual emails when the threads grow beyond 5 emails. If mailipile will have this feature it would be the last webmail solution I have been looking for all this time.

Feature Request: Optional Expiration Date

Many emails are irrelevant after a certain date - for example information about an upcoming concert. Please add a field that allows a user to specify an expiration date, after which the email will be deleted unless recipients choose not to allow delete on expiration for that email.

Fix sorting of large result sets

Currently the code "bails out" if there are over sort_max results and uses the index order for all but the last sort_max results. This is for performance reasons, but will result in incorrect output for many common cases, especially for new users who have added mulitple mailboxes to their mailpile.

It would be good to try pre-sorting the index using all the sort orders on offer and store mapping tables (index-position -> sorted-position). Using such tables would probably suffice to allow correct, fast sorting of very large result sets.

The downside is these tables would need to be updated every time a new message arrives, adding to the rescan overhead a O(nlogn) (n=size of index) workload. I suspect this would be a net win though.

Mailpile cannot find message in Maildir

TL-DR: Mailpile seems to index messages in Maildirs correctly, but cannot find them again.


I have set up Mailpile with a Maildir. Searching and viewing the Inbox etc. works fine. However, when I want to view a message (either on the command line or the web client), I get the following exception:

Traceback (most recent call last): File "/home/name/Downloads/mailpile/Mailpile/mailpile/commands.py", line 186, in _run return self._finishing(command, command(self, *args, **kwargs)) File "/home/name/Downloads/mailpile/Mailpile/mailpile/commands.py", line 174, in command return self.command(*args, **kwargs) File "/home/name/Downloads/mailpile/Mailpile/mailpile/plugins/search.py", line 307, in command expand=[email])) File "/home/name/Downloads/mailpile/Mailpile/mailpile/plugins/search.py", line 147, in __init__ result['message'] = self._message_details([exp_email])[0] File "/home/name/Downloads/mailpile/Mailpile/mailpile/plugins/search.py", line 68, in _message_details tree = email.get_message_tree() File "/home/name/Downloads/mailpile/Mailpile/mailpile/mailutils.py", line 816, in get_message_tree msg = self.get_msg() File "/home/name/Downloads/mailpile/Mailpile/mailpile/mailutils.py", line 696, in get_msg fd = self.get_file() File "/home/name/Downloads/mailpile/Mailpile/mailpile/mailutils.py", line 692, in get_file return self.get_mbox_ptr_and_fd()[2] File "/home/name/Downloads/mailpile/Mailpile/mailpile/mailutils.py", line 683, in get_mbox_ptr_and_fd fd = mbox.get_file_by_ptr(msg_ptr) File "/home/name/Downloads/mailpile/Mailpile/mailpile/mailutils.py", line 313, in get_file_by_ptr return self.get_file(msg_ptr[3:]) File "/usr/lib/python2.7/mailbox.py", line 372, in get_file f = open(os.path.join(self._path, self._lookup(key)), 'rb') File "/usr/lib/python2.7/mailbox.py", line 542, in _lookup raise KeyError('No message with key: %s' % key) KeyError: u'No message with key: 1375542072_0.2742.hostname

(name and hostname replaced for privacy)

In the corresponding dir, the filename is 1375542072_0.2742.hostname,U=4283,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,RS.

Opening the mailbox with the standard Python mailbox.Maildir class gives a list of keys with the stuff after the comma included. I couldn't figure out however, where this gets lost in Mailpile.

Only append "Info Signatures" on the first email of a thread

It's mighty annoying when you're 10 emails deep in conversation and you keep getting a big ole 8 line signature appended to a message. We can't control what other email clients do- but we can set an example. I propose by default never appending a users signature if it's a reply message in a thread

Mobile friendly Web UI

are there plans to make the web ui mobile friendly so a user can manage his mails easily with his phone?

Easy Search Term Stacking + Contexts

This astute suggestion comes form @nickjamespdx

What I commonly do is look back at emails from teammates, like in Gmail I type "mudcube" to look for emails from Michael ([email protected] etc) ..

but then I need find specific strings that I recall from earlier emails, so I will type a space and a string like:

mudcube saturday meeting

I always want an easier way to just view that specific conversation I have to look for.. if there were a faster/easier way to search instead of me having to remember specific strings from the email, that would be a huge problem solved.

Add metadata to tags, so we can filter tag lists by type and have nice icons

We have a few different "types" of tags already, which are represented differently in the UI and mean different things: Built-in (Inbox, Drafts, etc.), Attributes (New/Unread), Groups and of course "User defined".

Do we want to be able to let the user assign his own icons to his tags, @brennannovak ? It seems like it might not be smart to have a one-to-one type-to-icon mapping, as people might find it helpful in collapsed views to assign different icons to different groups for example, or different tags.

Why I use Outlook.com

As per the request of @brennannovak, here's the reasons why I use Outlook.

I used to use Gmail. I was a user since the beta. A friend invited me, and I remember the little invite module on the bottom left ;) Gmail has grown a lot, and the features keep on coming. It's becoming bloatware, in my opinion. I mean here's a quick breakdown of the features of Gmail.

  • Make calls
  • Video chat
  • Send texts
  • Chats
  • Group chats
  • Labels
  • Filters
  • Promotions
  • Social tab
  • Priority inbox
  • Display densities
  • Themes
  • Contacts
  • Tasks
  • Google + Integration

Those are the ones I thought of off the bat. Almost all of these features are shown on the main inbox page. Some are hidden in dropdowns, but there's buttons on that page. I dont want my email to be a task list, phone, contact organizing, social all-in-one app, I want it to do email.

Outlook has contacts in a separate app. You can completely hide chat. I never use it, so it's alway hidden so it's like it doesn't exist. It has categories and filters and all that, but again I can hide it. This is the left sidebar:

image

Much cleaner. Now look at the header / action bar area:

image

This will change. If you go to an email some buttons will appear, but not many (like, Reply). This is Gmail (taken from a friends):

image

There is one feature I do like that I don't think Gmail has, or if it did or does I never found it. At the bottom of all newsletters and things like GitHub notifications Outlook will have a "unsubscribe" link. It'll automatically unsubscribe you from newsletters without you having to click the link, login, etc.

image

Hope this helps!

RFE: Trust on first contact opportunistic GPG

Several of the GPG developers have discussed the possibility of opportunistic GPG encryption and message signing on a "trust on first contact" model, similar to that of SSH. (article here: http://lwn.net/Articles/464137/)., whereby the public key for email correspondents would be automatically retrieved and imported, and given some indication of "marginal" trust (and assurance that the key can't be changed without you knowing once you begin corresponding with someone).

Despite the obvious security weakness, in the form of one-time vulnerability to man in the middle attacks, this strategy overcomes a serious usability weakness for a net gain in security in most real-world circumstances. Noting the benefits and limitations, this should obviously be a supplement to traditional rigorous GPG verification and key management practices , with clear indications as to the level of identity assurance in the user interface.

I think Mailpile could be a good place to experiment with this strategy, since a web based interface can be easily tailored to display necessary trust information and security warnings in an intuitive way, and can automate the necessary GPG functions to automatically track keys.

Hardcoded dependency: PyBreeder

After cloning and setting up the project according to the Readme, attemts to running ./mp fail like so:

➜  Mailpile git:(master) βœ— ./mp -www
Traceback (most recent call last):
  File "./mp", line 3, in <module>
    from mailpile.app import Main
ImportError: No module named mailpile.app

I asumme this happens due to a hardcoded dependency to the PyBreeder project:

$ ls -l scripts/
breeder.py@ -> ../../Beanstalks/PyBreeder/breeder.py

Would it maybe be useful to indirect this dependency using more maintainable mechanisms like e.g. git submodules?

Automatically filter mailing list messages into labels

Mailing list messages should not come through the inbox, not even on first setup. There should automatically be a filter and label set up for each mailing list where messages come in from.

Think similar to the new Gmail inbox where they automatically filter Social, Promotions, Updates and Forums out of the primary inbox.

Can't view web UI

When I run ./mp --www and access http://localhost:33411 I don't see any data and the server spits the error:

----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 36226)
Traceback (most recent call last):
  File "/usr/lib64/python2.7/SocketServer.py", line 593, in process_request_thread
    self.finish_request(request, client_address)
  File "/home/miki/src/Mailpile/mailpile/httpd.py", line 281, in finish_request
    SimpleXMLRPCServer.finish_request(self, request, client_address)
  File "/usr/lib64/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib64/python2.7/SocketServer.py", line 649, in __init__
    self.handle()
  File "/usr/lib64/python2.7/BaseHTTPServer.py", line 340, in handle
    self.handle_one_request()
  File "/usr/lib64/python2.7/BaseHTTPServer.py", line 328, in handle_one_request
    method()
  File "/home/miki/src/Mailpile/mailpile/httpd.py", line 249, in do_GET
    'mailpile_size': len(session.config.index.INDEX)
AttributeError: 'NoneType' object has no attribute 'INDEX'
----------------------------------------

This is Python 2.7.5 (virtualenv) on Arch Linux.
I followed the steps in the README with both Maildir and mbox.

Fixed width font in message view?

Is there a nice readable fixed-width font we can use in the message view, so ASCII graphics and tables line up? Or ar all the fixed-width fonts horribly ugly?

Email length detection / limiting / auto responders

Composing
Provide UI feedback to people when composing an email:

"This email is the perfect length. Send it."
"Hey that email is quite long. The ideal length is about 4 - 8 sentences."
"Are you sure you want to send an email that long?"

"Based on previous conversations, your message is 10 sentences longer than that which the recipient usually sends to you. Consider shortening your message." [data_based_ui_guide]

Receiving
On the receiving messages side, an auto responder could auto reply to people who have sent you really long emails with messages like:

"Hey thanks for your email. I've probably read by now, but don't expect a reply as your message was about 4 paragraphs longer than what I usually reply to ~Brennan's Mailpile" [data_based_response]

"Whoa there buddy, does your mama know you actually send emails that long?" [custom_response]

Sources for inspiration:
http://www.fastcompany.com/3014857/leadership-now/why-every-email-should-be-5-sentences-long
http://www.fastcompany.com/3013894/leadership-now/why-your-emails-get-replies-or-dont
http://five.sentenc.es

ImportError: No module named plugins

root@aaa:/tmp/Mailpile-master# make
/bin/sh: 1: ./scripts/breeder.py: not found
make: *** [combined] Error 127

root@aaa:/tmp/Mailpile-master# python setup.py install
running install
Checking .pth file support in /usr/local/lib/python2.7/dist-packages/
/usr/bin/python -E -c pass
TEST PASSED: /usr/local/lib/python2.7/dist-packages/ appears to support .pth files
running bdist_egg
running egg_info
creating mailpile.egg-info
writing mailpile.egg-info/PKG-INFO
writing top-level names to mailpile.egg-info/top_level.txt
writing dependency_links to mailpile.egg-info/dependency_links.txt
writing manifest file 'mailpile.egg-info/SOURCES.txt'
reading manifest file 'mailpile.egg-info/SOURCES.txt'
writing manifest file 'mailpile.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/mailpile
copying mailpile/init.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/commands.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/vcard.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/ui.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/app.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/search.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/httpd.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/jsontemplate.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/util.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/mailutils.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/pgpmime.py -> build/lib.linux-x86_64-2.7/mailpile
copying mailpile/imap_mailbox.py -> build/lib.linux-x86_64-2.7/mailpile
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/init.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/commands.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/vcard.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/ui.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/app.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/search.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/httpd.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/jsontemplate.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/util.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/mailutils.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/pgpmime.py -> build/bdist.linux-x86_64/egg/mailpile
copying build/lib.linux-x86_64-2.7/mailpile/imap_mailbox.py -> build/bdist.linux-x86_64/egg/mailpile
byte-compiling build/bdist.linux-x86_64/egg/mailpile/init.py to init.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/commands.py to commands.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/vcard.py to vcard.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/ui.py to ui.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/app.py to app.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/search.py to search.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/httpd.py to httpd.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/jsontemplate.py to jsontemplate.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/util.py to util.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/mailutils.py to mailutils.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/pgpmime.py to pgpmime.pyc
byte-compiling build/bdist.linux-x86_64/egg/mailpile/imap_mailbox.py to imap_mailbox.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
installing scripts to build/bdist.linux-x86_64/egg/EGG-INFO/scripts
running install_scripts
running build_scripts
creating build/scripts-2.7
copying and adjusting scripts/mailpile -> build/scripts-2.7
changing mode of build/scripts-2.7/mailpile from 644 to 755
creating build/bdist.linux-x86_64/egg/EGG-INFO/scripts
copying build/scripts-2.7/mailpile -> build/bdist.linux-x86_64/egg/EGG-INFO/scripts
changing mode of build/bdist.linux-x86_64/egg/EGG-INFO/scripts/mailpile to 755
copying mailpile.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying mailpile.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying mailpile.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying mailpile.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/mailpile-0.0.0_dev20130803-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing mailpile-0.0.0_dev20130803-py2.7.egg
creating /usr/local/lib/python2.7/dist-packages/mailpile-0.0.0_dev20130803-py2.7.egg
Extracting mailpile-0.0.0_dev20130803-py2.7.egg to /usr/local/lib/python2.7/dist-packages
Adding mailpile 0.0.0-dev20130803 to easy-install.pth file
Installing mailpile script to /usr/local/bin

Installed /usr/local/lib/python2.7/dist-packages/mailpile-0.0.0_dev20130803-py2.7.egg
Processing dependencies for mailpile==0.0.0-dev20130803
Finished processing dependencies for mailpile==0.0.0-dev20130803

root@aaa:~# mailpile
Traceback (most recent call last):
File "/usr/local/bin/mailpile", line 5, in
pkg_resources.run_script('mailpile==0.0.0-dev20130803', 'mailpile')
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 499, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1235, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/local/lib/python2.7/dist-packages/mailpile-0.0.0_dev20130803-py2.7.egg/EGG-INFO/scripts/mailpile", line 3, in
from mailpile.app import Main
File "/usr/local/lib/python2.7/dist-packages/mailpile-0.0.0_dev20130803-py2.7.egg/mailpile/init.py", line 3, in
import mailpile.app
File "/usr/local/lib/python2.7/dist-packages/mailpile-0.0.0_dev20130803-py2.7.egg/mailpile/app.py", line 40, in
from mailpile.commands import COMMANDS, Action, Help, Load, Rescan
File "/usr/local/lib/python2.7/dist-packages/mailpile-0.0.0_dev20130803-py2.7.egg/mailpile/commands.py", line 16, in
import mailpile.ui
File "/usr/local/lib/python2.7/dist-packages/mailpile-0.0.0_dev20130803-py2.7.egg/mailpile/ui.py", line 28, in
from mailpile.search import MailIndex
File "/usr/local/lib/python2.7/dist-packages/mailpile-0.0.0_dev20130803-py2.7.egg/mailpile/search.py", line 27, in
import mailpile.plugins as plugins
ImportError: No module named plugins

Interesting Inbox priority interface

Came across an article about Dropbox releasing some API updates and among those updates was something to do with Email synchronization... then I learned Dropbox had acquired the MUCH hyped iOS email client "Mailbox" a few months ago... something to the tune of $50 - 100 Million. WTF!!! I had never even seen Mailbox as back in Feb it had this ridiculously long waiting queue to get to the use the friggin app. Anyway, there is a nice video which I took some screenshots from.

There are two aspects which are particularly of note: 1) sorting of emailing within relation to "time" you plan to deal with email

Priority sorting

The other is the "chat style" of relying to conversations, which is quite nice looking.

Chat Style Replying

Watch the whole video about the app interface here Mailbox App

Check these out @BjarniRunar @smarimc

Finish up extra params for Search feature

Here are the basic additional "search" params that a user can click on when doing text search also addresses sidebar navigation in Issue #13

Inbox

Also added checkboxes to account for that missing part of the interface! Check it out @BjarniRunar

RFE: Let me limit the mails I can see when logging in from an untrusted location

As requested here, this is my feature request which would make Mailpile make me feel a lot better when have to read my mail from some location I don't trust. A typical example is that I have to use an untrusted machine in an internet cafe somewhere in the middle of nowhere (no Wifi, can't use my notebook) to confirm a last minute mail. Or to tell my people that my other devices were stolen.

I call this the Vacation Mode: If I log in and Vacation Mode gets activated, I have a (configurable) limited view on my mails. For example, only the last 30 days of my inbox, no archive folders.

How could this mode be activated? From the top of my head I can imagine a few possibilities:

  • The GeoIP database says I'm somewhere else where I wasn't yesterday.
  • I have a special vacation password.
  • I can generate a list of one time passwords (ie. TANs) which I carry around with me and which I have to type in on top of that vacation password (I guess this is a separate RFE).
  • I logged in but didn't have the second element of my two factor authentication (because somebody stole my phone with the generator).

Sync addresses with LDAP

I hate to write things twice: it would be nice to have the possibility to get addresses from an LDAP-server, and it would be even better if this would work two-way, so changes in the address in Mailpile would be synced back to LDAP.

XMPP chat integration

Hi guys,

I'm very excited by the promise that Mailpile holds, especially in light of the open development model and the great ideas that are coming out of this issue tracker.

I see one of your stretch goals is built-in support for XMPP chat.

I'm the main author of Converse.js, an XMPP chat client similar to GTalk,written fully in Javascript and which can be integrated into any website.

http://conversejs.org

I have experience integrating it into a large Python (Plone) site (with single signon/session support), and I'd be happy to contribute to this project as well.

Regards
JC

Explore differing UI approaches + technical backing of "Group" sending (ad-hoc/traditional mailing lists)

Currently with most email clients if I want to message a group of contacts I have 3 options- putting the multiple contacts addresses in either (or a mixture) of these three fields:

To:
Cc:
Bcc:

Most people understand how to use these fields correctly, yet a situation which emerged where I wanted to email a group of people the same message but I wanted it to show up in their mailbox directly addressed to each recipient AND when they replied have me be the only one who got their response. The only option with most standard email clients is to manually send a message to each recipient- which is what I did.

Yes this feature is basically how bulk mailing lists function- but from a UX side would quite useful if the UI provided such a method for small (2- 50) people group messages!

Clustered Data Visualization Style Inbox

As per a conversation between @smari and myself, we got to thinking about visualizing your inbox with neat force-directed data visuazation clusters.

Then a friend recommended I check out a project out of MIT called Immersion which is quite cool stuff. Checkout their demo Here's a screenshot of what it looks like.

Immersion Relationship visualization

Definitely something to consider as it's quite interesting and is really uncharted territory as far as email interfaces go.
However, I wonder what is optimal for this style of navigation / visualization- the three types of information I can see benefiting most from this style of visualization are:

  • Relationships
  • Conversations
  • Groups of Relationships
  • A mixture of all three

What do y'all think about this?

Implement Intuitive Interface for PGP Encryption & Signing

Making it incredibly easy and intuitive to send signed & encrypted email is not an easy task and there are not many good examples out there. I've been using GPGMail plugin for Mac Mail client which uses GPG Keychain Access- all in all, it works, but there are numerous aspect which I find quite annoying, annoying in fact enough to uninstall the plugin altogether.

MacMail + GPGMail

The problems I've encountered with this plugin are:

Contact Based Format Choosing

  • Defaulting to OpenPGP as opposed to S/MIME is annoying. In theory it offers more verifiability as my emails are "signed", but I argue it is actually a net loss. People whose clients don't support OpenPGP receive an attachment file (which to non tech users) like my Mom, and Friends is confusing. Some say they've tried opening this file, others think it looks like a virus.
  • I propose defaulting to S/MIME and only switching to OpenPGP when a contact is added which has a PGP key associated- at which point we switch to OpenPGP.

Auto Encrypt When Keys Are Present For Contact

  • I find it weird that when I have a key for a contact I still have to manually remember to choose to "encrypt" the message. If me and a contact have the means to send & receive encrypted msgs, why would I not encrypt them?

Clearly Explain What is Not Encrypted

  • Addresses and the subject line are not encrypted- this needs to be explained to the user

Explain Contact Fields Better

  • Most people understand To: Cc: and Bcc: quite well. Adding encryption complicates things. People are Bcc: are not really silent once PGP has been added to an email.
  • Additionally, the words "Participating" and "Listening" seem to more accurately communicate what Cc: and Bcc: are, respectively

More on this later...

Calendar

Are there any plans to implement a calendar, e.g. reading from an exchange-server, caldav-support, ... ?

Make a completely minimal "focus" interface theme

This idea for a theme comes from my friend Crystal Beasley who is a UX person / ship tightener at Mozilla, she proclaimed enthusiastically:

"I do NOT want an unread count. I do NOT want it to always dump me on the inbox. I want a "focus mode... for the home page, drop everything except the search box and the compose button, much like the google home page."

Focus Mode Mockup

I really like the simplicity of this idea and could have fun making it pretty!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.